Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. //#define debug(...) printf( __VA_ARGS__ )
  5. #define debug(...) /****nothing****/
  6.  
  7. #define ll long long
  8. #define ull unsigned long long
  9. #define pb push_back
  10. #define mem(arr,val) memset(arr,val,sizeof(arr))
  11. #define mp make_pair
  12. #define pii pair<int,int>
  13. #define F first
  14. #define S second
  15. #define sz(x) (int)(x).size()
  16. #define nopos string::npos
  17. #define fr(i,a,b) for(i=a;i<=b;i++)
  18. #define frn(i,a,b) for(i=a;i>=b;i--)
  19. int n,ar[2000],now,i,j,grt,k,fl=1,lft,pos;
  20. stack<int> stk1,stk2;
  21.  
  22. int main()
  23. {
  24. //freopen("d://i.txt","r",stdin);
  25. //freopen("d://o.txt","w",stdout);
  26.  
  27. while(cin>>n && n!=0)
  28. {
  29. fr(i,0,n-1)
  30. {
  31. scanf("%d",ar+i) ;
  32. if(ar[i]==1)
  33. pos=i;
  34. }
  35.  
  36. fr(i,0,pos-1)
  37. stk2.push(ar[i]);
  38.  
  39. stk1.push(1);
  40.  
  41. fr(i,pos+1,n-1)
  42. {
  43. while(!stk1.empty() && stk1.top()>ar[i])
  44. {
  45. stk2.push(stk1.top());
  46. stk1.pop();
  47. }
  48.  
  49. stk1.push(ar[i]);
  50. }
  51.  
  52. // print(stk1);
  53. // print(stk2);
  54.  
  55. int lastneed=stk1.top()+1;
  56.  
  57. while(!stk1.empty())
  58. {
  59. int val=stk1.top();
  60.  
  61. stk1.pop();
  62.  
  63. if(!stk1.empty())
  64. {
  65. if(stk1.top()+1 !=val)
  66. {
  67. int need=stk1.top()+1;
  68.  
  69. while(!stk2.empty() && stk2.top()==need)
  70. {
  71. stk2.pop();
  72. need++;
  73. if(need==val)
  74. break;
  75. }
  76.  
  77. if(need!=val)
  78. {
  79. fl=0;
  80. break;
  81. }
  82.  
  83. }
  84. }
  85.  
  86. }
  87.  
  88. while(!stk2.empty() && stk2.top()==lastneed)
  89. {
  90. stk2.pop();
  91. lastneed++;
  92. if(lastneed==n+1)
  93. break;
  94. }
  95.  
  96. if(lastneed!=(n+1) ) fl=0;
  97.  
  98. printf((fl==0)?"no\n":"yes\n");
  99.  
  100. fl=1;
  101. while(!stk2.empty()) stk2.pop();
  102. while(!stk1.empty()) stk1.pop();
  103. }
  104.  
  105. return 0;
  106.  
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement