Problem:
Score : 400 points

Problem Statement

One day, Snuke was given a permutation of length N, a_1, a_2, ..., a_N, from his friend.

Find the following:

Constraints

1 ≦ N ≦ 200,000

(a_1, a_2, ..., a_N) is a permutation of (1, 2, ..., N).

Input

The input is given from Standard Input in the following format:

N
a_1 a_2 ... a_N

Output

Print the answer.

Note that the answer may not fit into a 32-bit integer.

Sample Input 1

3
2 1 3

Sample Output 1

9

Sample Input 2

4
1 3 2 4

Sample Output 2

19

Sample Input 3

8
5 4 8 1 2 6 7 3

Sample Output 3

85

Solution in C (GCC 5.4.1) (judge verdict: Time Limit Exceeded)

#include<stdio.h>

#define min(x, y) ((x > y)? y : x)

int a[200002];
int N;



int main(void){
    long long int ans = 0;
    int i, left, right;
    
    scanf("%ld", &N);
    
    a[0] = a[N + 1] = 0;
    
    for(i = 1; i <= N; i++){
        scanf("%ld", &(a[i]));
    }
    
    for(i = 1; i <= N; i++){
        for(left = 0; a[i - left] >= a[i]; left++);
        for(right = 0; a[i + right] >= a[i]; right++);
        
       // printf("%ld\t%ld\t%ld\t%ld\n", i, a[i], left, right);
        
        ans += (long long int)left * right * a[i];
    }
    
    printf("%lld\n", ans);
    
    return 0;
}