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>

int main(void)
{
	int i, j, now, left_count, right_count, N, a[200010];
	long long int ans = 0;

	scanf("%d", &N);
	for (i = 0; i < N; i++) {
		scanf("%d", &a[i]);
	}

	for (i = 0; i < N; i++) {
		now = a[i];

		left_count = 0;
		right_count = 0;
		// 右側と左側を分けて考える
		j = i - 1;
		while (j >= 0) {
			if (now < a[j]) left_count++;
			else 			break;
			j--;
		}

		j = i + 1;
		while (j < N) {
			if (now < a[j]) right_count++;
			else			break;
			j++;
		}

		ans += (long long int)now * (left_count + 1) * (right_count + 1);
	}

	printf("%lld", ans);

	return 0;
}