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 Java8 (OpenJDK 1.8.0) (judge verdict: Wrong Answer)

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String N = sc.nextLine();
		String N_i[] = N.split("");
		int count = 0;
		int sub = 0;
		int tmp_c = 1;
		String tmp = N_i[0];
		for(int i = 1; i < N_i.length; i++) {
			String s = N_i[i];
			if(tmp.equals(s)) {
				tmp_c++;
				if(i == N_i.length-1) {
					if(tmp_c !=1) {
						count = count+(tmp_c*(tmp_c+1))/2;
					}else {
						tmp_c--;
						count = count+(tmp_c*(tmp_c+1))/2;
					}
				}
			}else {
				if(tmp_c !=1) {
					if(tmp_c<sub && s.equals(">")) {
						tmp_c--;
						count = count+(tmp_c*(tmp_c+1))/2;
					}else {
						count = count+(tmp_c*(tmp_c+1))/2;
					}
				}else {
					if(i==1 && tmp.equals(">")) {
						count = count+(tmp_c*(tmp_c+1))/2;
					}else {
						tmp_c--;
						count = count+(tmp_c*(tmp_c+1))/2;
					}
				}
				sub = tmp_c;
				tmp_c = 1;
				//System.out.println(count);
			}
			tmp = s;
		}
		System.out.println(count);
	}

}