Advertisement
Zeinab_Hamdy

Untitled

Sep 1st, 2023
868
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.12 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define nl "\n"
  4. #define fi first
  5. #define se second
  6. #define pb push_back
  7. #define ll long long
  8. #define ull unsigned ll
  9. #define RV  return void
  10. #define inf 2000000000
  11. #define sz(x) int(x.size())
  12. #define all(v) v.begin(), v.end()
  13. #define rall(v) v.rbegin(), v.rend()
  14. #define Mini(x) *min_element(all(x))
  15. #define Maxi(x) *max_element(all(x))
  16. #define fixed(n) fixed << setprecision(n)
  17. // #define ceil(w, m) (((w) / (m)) + ((w) % (m) ? 1 : 0))
  18. #define cin(v) for (auto&i:v) cin >> i;
  19. #define cout(v) for (auto&i:v) cout << i << " ";
  20. #define clr(memo, x) memset(memo, x, sizeof memo)
  21. #define updmin(a, b) a = min(a, b)
  22. #define updmax(a, b) a = max(a, b)
  23. #define vi vector < int >
  24. #define vl vector < ll >
  25. #define vc vector < char >
  26. #define vs vector < string >
  27. #define v2i vector < vector < int > >
  28. #define v2l vector < vector < int > >
  29. #define seti set < int >
  30. #define setl set < ll >
  31. #define mapii map < int , int >
  32. #define mapll map < ll , ll >
  33. #define mapli map < ll , int >
  34. #define mapci map < char , int >
  35. #define mapsi map < string , int >
  36. #define pll pair < ll , ll >
  37. #define pii pair < int , int >
  38. #define range(l,r,x) for(int i=l ; i < r ; i+=x)
  39. #define FastCode ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
  40. vector < string > ternary= {"NO\n" , "YES\n"};
  41.  
  42. void  Zainab(){
  43.             #ifndef ONLINE_JUDGE
  44.               freopen("input.txt", "r", stdin);
  45.               freopen("output.txt", "w", stdout);
  46.             #endif
  47. }
  48.  
  49.  
  50. /*================================  Prblem solution  ================================ */
  51.  
  52. bool Sort(stack <int > st ){
  53.    
  54.     while(!st.empty()){
  55.         int temp= st.top();
  56.         st.pop();
  57.         if(!st.empty()){
  58.             if(st.top() > temp) {
  59.                 return 0;
  60.             }
  61.         }
  62.     }
  63.     return 1;
  64. }
  65.  
  66.  
  67. void myCode(){
  68.  
  69.  
  70. string s;
  71. cin >> s;
  72. stack < int > st;
  73. int n = sz(s);
  74.  
  75. bool flag =0;
  76. for(int i =0 ; i < n ; i++){
  77.     if(s[i]=='+') st.push(1);
  78.    
  79.     else if(s[i]=='-') {
  80.         if(!st.empty())
  81.           st.pop();
  82.         else RV(cout <<"NO\n");
  83.     }
  84.    
  85.     else if(s[i]=='0') {
  86.          if(sz(st)   and st.top() == 1 )
  87.               st.top()--;
  88.            
  89.          if(Sort(st)) RV(cout <<"NO\n");
  90.          flag=1;
  91.          
  92.     }
  93.    
  94.     else if(s[i]=='1'){
  95.         if(!Sort(st))  RV(cout <<"NO\n");
  96.         flag =1;
  97.     }
  98. }
  99.  
  100.  
  101.  if(!flag) RV(cout << "YES\n");
  102. for(int i =0 ; i < n ; i++){
  103.     if(s[i]=='0' or s[i]=='1'){
  104.         char c = s[i];
  105.         if(i + 1 < n and s[i+1]!=s[i] and (s[i+1]=='0' or s[i+1]=='1'))  RV(cout <<"NO\n");
  106.        
  107.     }
  108.    
  109.     if(s[i]=='1'){
  110.         int j =i+1;
  111.         while( j < n and s[j]!='0' and s[j]!='+'){
  112.             j++;
  113.         }
  114.         // j--;
  115.         if(j < n and s[j]=='0') RV(cout <<"NO\n");
  116.     }
  117.    
  118.     if(s[i]=='0'){
  119.         int j =i+1;
  120.         while( j < n and s[j]!='1' and s[j]!='-'){
  121.             j++;
  122.         }
  123.         // j--;
  124.         if(j < n and s[j]=='1') RV(cout <<"NO\n");
  125.     }
  126.    
  127.    
  128. }
  129.  
  130. for(int i =0 ; i < n ; i++){
  131.     if(s[i]=='1' ){
  132.         int j =i+1;
  133.         int cnt=0;
  134.         while( j < n and s[j]!='0' ){
  135.             if(s[j]=='+') cnt++;
  136.             else if(s[j]=='-' and cnt > 0) cnt--;
  137.             else break;
  138.             j++;
  139.         }
  140.      
  141.         // cout << cnt << " " << i << " " << j <<nl;
  142.         if(cnt == 0 and j < n and  s[j]=='0' )
  143.             RV(cout <<"NO\n");
  144.     }
  145.    
  146.     if(s[i]=='0' ){
  147.         int j =i+1;
  148.         int cnt=0;
  149.         while( j < n and s[j]!='1' ){
  150.             if(s[j]=='+') cnt++;
  151.             else if(s[j]=='-'  and cnt > 0) cnt--;
  152.             else break;
  153.             j++;
  154.         }
  155.      
  156.      
  157.         // cout << cnt << " " << i << " " << j <<nl;
  158.         if(cnt == 0 and j < n and  s[j]=='1' )
  159.             RV(cout <<"NO\n");
  160.     }
  161. }
  162.  
  163.  
  164. cout <<"YES" <<  nl;
  165.  
  166.  
  167.  
  168. }
  169.  
  170.  
  171. int main(){
  172.                                    FastCode ;
  173.                                      Zainab() ;
  174.  
  175.     int testCase=1;
  176.           cin >> testCase ;
  177.       for(int i=1 ; i<= testCase ; i++)
  178.         myCode();
  179.  
  180.     return 0;
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement