Advertisement
erfanul007

UVa 514

Sep 14th, 2021
992
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define ll long long int
  5.  
  6.  
  7. #ifdef ERFANUL007
  8.     #define debug(...) __f(#__VA_ARGS__, __VA_ARGS__)
  9.     template < typename Arg1 >
  10.     void __f(const char* name, Arg1&& arg1){
  11.         cout << name << " = " << arg1 << std::endl;
  12.     }
  13.     template < typename Arg1, typename... Args>
  14.     void __f(const char* names, Arg1&& arg1, Args&&... args){
  15.         const char* comma = strchr(names, ',');
  16.         cout.write(names, comma - names) << " = " << arg1 <<" | ";
  17.         __f(comma+1, args...);
  18.     }
  19. #else
  20.     #define debug(...)
  21. #endif
  22.  
  23. int main(){
  24.     #ifdef ERFANUL007
  25.         clock_t tStart = clock();
  26.         freopen("input.txt", "r", stdin);
  27.         freopen("output.txt", "w", stdout);
  28.     #endif
  29.  
  30.     int n;
  31.  
  32.     while(cin >> n && n){
  33.         int a[n];
  34.         while(1){
  35.             cin >> a[0];
  36.             if(!a[0]) break;
  37.             for(int i=1; i<n; i++) cin >> a[i];
  38.  
  39.             bool vis[n], f = true;
  40.             memset(vis, 0, sizeof(vis));
  41.             int last = 0;
  42.             priority_queue<int> pq;
  43.  
  44.             for(int i=0; i<n; i++){
  45.                 if(a[i] > last){
  46.                     int x = a[i] - 1;
  47.                     while(x > last){
  48.                         if(!vis[x]) pq.push(x);
  49.                         x--;
  50.                     }
  51.                     vis[a[i]] = true;
  52.                     last = a[i];
  53.                 }
  54.                 else{
  55.                     if(pq.top() != a[i]) f = false;
  56.                     vis[a[i]] = true;
  57.                     pq.pop();
  58.                 }
  59.             }
  60.             if(f) cout<< "Yes\n";
  61.             else cout << "No\n";
  62.         }
  63.         cout << '\n';
  64.     }
  65.  
  66.     #ifdef ERFANUL007
  67.         fprintf(stderr, ">>> Runtime : %.9f\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
  68.     #endif
  69.  
  70.     return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement