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# (Mono 4.6.2.0) (judge verdict: Wrong Answer)

using System;
using System.Text.RegularExpressions;

class Prog
{
	static void Main()
	{
		var r = new Regex( @"(.)\1*", RegexOptions.Compiled );
		var S = Console.ReadLine();
		
		var mc = r.Matches( S );
		var sum = 0;
		
		var lv = "";
		var lr = -1;
		
		for( int i=0 ; i<mc.Count ; i++ )
		{
			int left, right;
			
			Match m = mc[ i ];
			
			if( m.Value[ 0 ] == '<' )
			{
				left = 0;
				right = m.Value.Length;
				
				for( int n=1 ; n<right ; n++ )
				{
					sum += n;
				}
				
				if( lr >= 0 )
				{
					sum += Math.Min( lr, left );
				}
				
				lr = right;
			}
			else
			{
				left = m.Value.Length;
				right = 0;
				
				for( int n=left-1 ; n>=1 ; n-- )
				{
					sum += n;
				}
				
				if( lr >= 0 )
				{
					sum += Math.Max( lr, left );
				}
				else
				{
					sum += left;
				}
				
				lr = right;
			}
			
			lv = m.Value;
		}
		
		if( lv[ 0 ] == '<' && lr > 0 )
		{
			sum += lr;
		}
		
		Console.WriteLine( sum );
	}
}