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) {
        new Main().run();
    }

    private void run() {
        Scanner scanner = new Scanner(System.in);
        String S = scanner.next();
        int[] map = new int[1000000];
        int x = 0;
        char which = S.charAt(0);
        map[x] = 1;
        for (int i = 1; i < S.length(); i++) {
            if (S.charAt(i) == which) {
                map[x]++;
            } else {
                which = S.charAt(i);
                x++;
                map[x]++;
            }
        }
        int ans = 0;
        boolean bigger = false;
        if (S.charAt(0) == '<') bigger = true;
        if(!bigger) ans += map[0];
        for (int i = 0; 0 != map[i]; i++) {
            for (int j = 1; j < map[i]; j++) {
                ans += j;
            }
            if(bigger && map[i+1] != 0) {
                ans += Math.max(map[i], map[i+1]);
            }else if(bigger && map[i+1] == 0){
                ans += map[i];
                break;
            }
            bigger = !bigger;
        }

        System.out.println(ans);
    }

}