#include<string.h> void Output( char [] ) ; int Solve( char [] , int ) ; int pd( char [] , int , int ); int main(void) { char zf[256]; gets( zf ); Solve( zf , 0 ); Output( zf ) ; return 0 ; } int pd( char zf[] , int left, int right ) { int i , leftAcount ; if( zf[ left - 1 ] == '-') { i = left; leftAcount = 1; while( ++ i < right) { if(zf[i] == '(') { leftAcount ++; } if(zf[i] == '+' && leftAcount == 1) { return 0; } } } if( zf[ left - 1 ] == '/') { return 0; } if(zf[ left - 1 ] != '*' && zf[ left - 1 ] != '/' && zf[ right + 1 ] != '*' && zf[ right + 1 ] != '/') { return 1; } i = left ; leftAcount = 1; while(++i < right) { if(zf[i] == '(') { leftAcount ++; } if(zf[i] == '*' && leftAcount == 1) { return 1; } } return 0; } int Solve( char zf[] , int i ) { int left , right ; while( zf[i] != '\0') { if( zf[i] == ')') { return i ; } if( zf[i] == '(') { left = i ; right = Solve( zf , i + 1 ) ; i = right ; if( pd( zf , left , right )) { zf[left] = ' ' ; zf[right] = ' ' ; } } i ++ ; } } void Output( char zf[] ) { int i = 0 ; while( zf[ i ] != '\0') { if(zf[i] != ' ') { putchar(zf[i]); } i ++ ; } } /************************************************************** Problem: 1855 User: admin Language: C Result: Accepted Time:33 ms Memory:1036 kb ****************************************************************/