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++ (GCC 9.2.1) (judge verdict: Wrong Answer)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<utility>
#include<tuple>
#include<map>
#include<queue>
#include<set>
#include<stack>
#include<iomanip>
#include<numeric>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>

using namespace std;

using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;

#define BIL ((ll)1e9)
#define MOD ((ll)1e9+7)
#define INF (1LL<<60)           //1LL<<63でオーバーフロー
#define inf (1<<29)             //1<<29でオーバーフロー

int main(int argc,char* argv[]){
    cin.tie(0);
    ios::sync_with_stdio(0);
    cout << fixed << setprecision(20);

    string s;
    cin >> s;
    int n=s.size()+1;

    vector<int> a(n);
    for(int i=0;i<n-1;i++){
        if(s[i]=='<'){
            if(a[i+1]<a[i]+1)a[i+1]=a[i]+1;
        }
    }
    for(int i=n-2;i>=0;i--){
        if(s[i]=='>'){
            if(a[i]<a[i+1]+1)a[i]=a[i+1]+1;
        }
    }

    int sum=0;
    for(int i=0;i<n;i++){
        sum+=a[i];
    }

    cout << sum << endl;

    // Wrong Answer
    // a[0]=0;
    // int begin=0,minus=0,sum=0;
    // for(int i=0;i<s.size();i++){
    //     if(s[i]=='<'){
    //         sum+=a[i]+1;
    //         a[i+1]=a[i]+1;
    //         if(begin!=0){
    //             if(a[begin]<=minus){
    //                 sum=sum-a[begin]+minus+1;
    //             }
    //             begin=0;
    //             minus=0;
    //         }
    //     }else{
    //         if(begin==0){
    //             begin=i;
    //         }
    //         sum+=minus;
    //         minus++;
    //     }
    // }

    // cout << sum << endl;

    return 0;
}