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: Wrong Answer)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define lli long long int
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
#define true 1
#define false 0




typedef struct vector {
	int x;
	int y;
} vector;




int main(void){
	int i,j;
	vector *a;
	int n;
	int t,s;
	lli sum;
	scanf("%d",&n);
	a = calloc(sizeof(vector),n);
	for(i=0;i<n;i++){
		scanf("%d",&a[i].x);
		t = 0;
		while(a[i].x < a[j].x){
			t += a[j].y;
			s -= a[j].x * a[j].y;
			j--;
		}
		a[++j].y = t+1;
		a[j].x = a[i].x;
		s+=a[i].x*(t+1);
		sum+=s;
	}
	printf("%lld\n", sum);
	return 0;
}