Ramps X09467


Statement
 

pdf   zip

In this exercice we say that in the position ii of vector vv there is a ramp when the elements v[i]v[i], v[i+1]v[i+1] y v[i+2]v[i+2] are sorted in strictly increasing or decreasing order.

For example, when n=7n=7 and v=[4,5,4,3,4,2,4]v=[4,5,4,3,-4,2,4] there are ramps at the positions 1, 2 and 4. When v=[0,0,0,0,0,0]v=[0,0,0,0,0,0] there are no positions with a ramp.

Two positions with a ramp, ii and jj with i<ji<j, are potentially conflictive if the corresponding ramps involve some common position.

In the previous example, the ramps at positions 1 and 2 are potentially conflictive, the one at position 2 is potentially conflictive with the ramp at position 4. The ramp at position 1 does not share any position with the ramp at position 4, therefore the ramps at positions 1 and 4 are not potentially conflictive.

Write a program indicating the positions with a ramp and the number of pairs (i,j)(i,j) with i<ji<j corresponding to positions with a ramp and potentially conflictive.

Your program must define, implement and use the following procedures:

vector<bool> ramps_pos(const vector <int>& V);

which, given a vector of integers, returns a vector, with the same dimension, of boolean values, where the position ii holds the value true if and only if the vector VV has a ramp a position ii.

int pot_conflictive(const vector <bool>& B);

which, given a vector indicating the positions with a ramp determines the number of pairs of positions (i,j)(i,j), i<ji < j, with a ramp and potentially conflictive.

Input

The input is formed by a non-empty sequence of cases. Each case is described by an integer n3n\geq 3 followed by the nn integer values of the corresponding vector.

Output

Print, for each case, the positions having a ramp and the number of pairs of positions (i,j)(i,j) with i<ji<j having a ramp and potentially conflictive.

Follow the format especified in the examples. Your code must follow the rules of style and the adequate comments. The simplicity and efficiency of the proposed solutions will be taken into consideration for the evaluation.

Public test cases
  • Input

    6 
    0 0 0 0 0 0
    7 
    1 2 3 4 3 2 1
    
    

    Output

    positions with a ramp:
    potentially conflictive: 0
    ---
    positions with a ramp: 0 1 3 4
    potentially conflictive: 3
    ---
    
  • Input

    3 
    7 8 7
    3 
    7 8 9
    3 
    8 7 6
    

    Output

    positions with a ramp:
    potentially conflictive: 0
    ---
    positions with a ramp: 0
    potentially conflictive: 0
    ---
    positions with a ramp: 0
    potentially conflictive: 0
    ---
    
  • Input

    8 
    9 8 7 6 5 4 3 2
    9 
    0 1 2 1 0 1 2 1 0
    

    Output

    positions with a ramp: 0 1 2 3 4 5
    potentially conflictive: 9
    ---
    positions with a ramp: 0 2 4 6
    potentially conflictive: 3
    ---
    
  • Input

    6 
    1 2 3 4 5 6
    7 
    100  90  80  90 100 90 80
    
    

    Output

    positions with a ramp: 0 1 2 3
    potentially conflictive: 5
    ---
    positions with a ramp: 0 2 4
    potentially conflictive: 2
    ---
    
  • Input

    6 
    0 1 0 1 0 1
    
    

    Output

    positions with a ramp:
    potentially conflictive: 0
    ---
    
  • Information
    Author
    Professorat de PRO1
    Language
    English
    Translator
    Maria Serna
    Original language
    Catalan
    Other languages
    Catalan Spanish
    Official solutions
    Unknown.
    User solutions
    C++