Advertisement
erfanul007

Uva 727

Sep 14th, 2021
999
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.79 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4.  
  5. #ifdef ERFANUL007
  6.     #define debug(...) __f(#__VA_ARGS__, __VA_ARGS__)
  7.     template < typename Arg1 >
  8.     void __f(const char* name, Arg1&& arg1){
  9.         cout << name << " = " << arg1 << std::endl;
  10.     }
  11.     template < typename Arg1, typename... Args>
  12.     void __f(const char* names, Arg1&& arg1, Args&&... args){
  13.         const char* comma = strchr(names, ',');
  14.         cout.write(names, comma - names) << " = " << arg1 <<" | ";
  15.         __f(comma+1, args...);
  16.     }
  17. #else
  18.     #define debug(...)
  19. #endif
  20.  
  21. int main(){
  22.     #ifdef ERFANUL007
  23.         clock_t tStart = clock();
  24.         freopen("input.txt", "r", stdin);
  25.         freopen("output.txt", "w", stdout);
  26.     #endif
  27.  
  28.     int t, i=0; scanf("%d", &t);
  29.     getchar();
  30.     getchar();
  31.  
  32.     char s[60];
  33.     stack< char > st;
  34.  
  35.     while(t){
  36.         char ch;
  37.         if(scanf("%c", &ch) == EOF){
  38.             while(!st.empty()){
  39.                 s[i++]= st.top();
  40.                 st.pop();
  41.             }
  42.             s[i] = '\0';
  43.             printf("%s\n", s);
  44.             break;
  45.         }
  46.         //printf("%c", ch);
  47.         if(ch == '\n'){
  48.             while(!st.empty()){
  49.                 s[i++]= st.top();
  50.                 st.pop();
  51.             }
  52.             s[i] = '\0';
  53.             printf("%s\n", s);
  54.             i = 0;
  55.             t--;
  56.             if(t) printf("\n");
  57.             continue;
  58.         }
  59.         else if(ch >= '0' && ch <='9') s[i++] = ch;
  60.         else if(ch == '(') st.push(ch);
  61.         else if(ch == ')'){
  62.             while(!st.empty()){
  63.                 ch = st.top();
  64.                 st.pop();
  65.                 if(ch == '(') break;
  66.                 s[i++] = ch;
  67.             }
  68.         }
  69.         else if(ch == '+' || ch == '-'){
  70.             while(!st.empty() && st.top() != '('){
  71.                 s[i++] = st.top();
  72.                 st.pop();
  73.             }
  74.             st.push(ch);
  75.         }
  76.         else if(ch == '*' || ch == '/'){
  77.             while(!st.empty() && st.top() != '('){
  78.                 if(st.top() == '+' || st.top() == '-') break;
  79.                 s[i++] = st.top();
  80.                 st.pop();
  81.             }
  82.             st.push(ch);
  83.         }
  84.         getchar();
  85.     }
  86.  
  87.     #ifdef ERFANUL007
  88.         fprintf(stderr, ">>> Runtime : %.9f\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
  89.     #endif
  90.  
  91.     return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement