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 JavaScript (node.js v5.12) (judge verdict: Accepted)

function Main(input) {
  input = input.trim();
  var S = input.split("");
  var Slong = S.length
  var Muki = ">";
  var Out = 1;
  var V = [];
  var Left = 0;
  var Right = 0;
  var Sum = 0;
  for(var i = 0;i<Slong;i++){
 
    if(S[i] == Muki){
      if(Muki == ">"){
        Left ++;
    }else{
      Right ++;
    }
    Out = 0;
  }else{
    if(Muki == "<"){
      V.push({L:Left,R:Right})
      Muki = ">"
      Left = 0;
      Right = 0;
      Left ++;
      Out = 1;
    }else{
      Muki = "<"
      Right ++;
      Out = 0;
    }
  }
  }
  if(Out == 0){
  V.push({L:Left,R:Right})
  }
  
//console.log(V);
for(var i=1;i<V.length;i++){
  if(V[i-1].R < V[i].L){
    V[i-1].R --; 
  }else{
    V[i].L --;
  }
}
//  console.log(V);
for(var i=0;i<V.length;i++){
    Sum += (V[i].L*(V[i].L+1))/2;
//    console.log((V[i].L*(V[i].L+1))/2);
    Sum += (V[i].R*(V[i].R+1))/2;
//    console.log((V[i].R*(V[i].R+1))/2);
  }
  console.log(Sum);
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));