Problem:
Score : 300 points

Problem Statement

Given is a string S of length N-1.
Each character in S is < or >.

A sequence of N non-negative integers, a_1,a_2,\cdots,a_N, is said to be good when the following condition is satisfied for all i (1 \leq i \leq N-1):

If S_i= <: a_i<a_{i+1}

If S_i= >: a_i>a_{i+1}

Find the minimum possible sum of the elements of a good sequence of N non-negative integers.

Constraints

2 \leq N \leq 5 \times 10^5

S is a string of length N-1 consisting of < and >.

Input

Input is given from Standard Input in the following format:

S

Output

Find the minimum possible sum of the elements of a good sequence of N non-negative integers.

Sample Input 1

<>>

Sample Output 1

3

a=(0,2,1,0) is a good sequence whose sum is 3.
There is no good sequence whose sum is less than 3.

Sample Input 2

<>>><<><<<<<>>><

Sample Output 2

28

Solution in C++14 (GCC 5.4.1) (judge verdict: Runtime Error)

#include <bits/stdc++.h>
using namespace std;

const int maxn = 1e6+10;

int a[maxn];


long long get(int x) {
	return 1ll * (x-1) * x / 2;
}

int main() {
	freopen("inp.txt", "r", stdin);
	ios::sync_with_stdio(false);
	cin.tie(0);
	string s;
	cin >>s ;
	int n= s.length();
	
	long long res = 0;
	for(int i=0;i<n;i++) {
		int j = i;
		while (j < n && s[j] == '<') {
			j ++;
		}
		
		int len = j - i;
		int i1 = j;
		while (j < n && s[j] == '>') {
			j ++;
		}
		int len1 = j - i1;
//		cerr << len <<" " << len1 << endl;
		res += get(min(len, len1)) + get(max(len, len1) + 1);
		i = j - 1;
	}
	
	cout << res;
	return 0;
}