#include const int max = 1000; int stack[max]; char rchar() { char c; while ( (c = getchar() ) == ' '); // printf( "r-%c\n", c); return c; } int amax(int a, int b) { if ( a > b) return a; else return b; } int doState( bool comp ) { char c; c = rchar(); if ( c == EOF) return 0; while ( c == 'C' ) { comp = !comp; c = rchar(); } if ( c == 'U' ) { int left, right; left = doState( comp ); right = doState( comp ); if ( comp ) return amax(left, right); else return left + right; } // printf("-%c\n", c); return 1; } int main() { while ( 1 ) { int res; res = doState( false); if ( !res ) break; printf( "%d\n", res ); // printf( "---%c\n", getchar()); if ( getchar() == EOF ) break; } return 0; }