Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cmath>
- #include <cstdio>
- #include <vector>
- #include <iostream>
- #include <algorithm>
- #include<stack>
- #include<queue>
- using namespace std;
- /*void printStack(stack <int> s)
- {
- while (!s.empty())
- {
- cout << '\t' << s.top();
- s.pop();
- }
- cout << '\n';
- }
- void printQueue(queue <int> gq)
- {
- queue <int> g = gq;
- while (!g.empty())
- {
- cout << '\t' << g.front();
- g.pop();
- }
- cout << '\n';
- }
- */
- int main() {
- int T;
- cin>>T;
- if(T>10||T<1)
- {
- return false;
- }
- for(int i=1;i<=T;i++)
- {
- int N;
- cin>>N;
- if(N<0||N>100000)
- {
- return false;
- }
- queue<int> input;
- stack<int> reserved;
- for(int j=1;j<=N;j++)
- {
- int Ai;
- cin>>Ai;
- if(Ai<1||Ai>N)
- {
- return false;
- }
- input.push(Ai);
- }
- while(input.front()!=1)
- {
- reserved.push(input.front());
- input.pop();
- }
- int temp=0;
- temp=1;
- input.pop();
- while(!input.empty())
- {
- if(input.front()==temp+1)
- {
- temp=input.front();
- input.pop();
- }
- else if(reserved.top()==temp+1)
- {
- temp=reserved.top();
- reserved.pop();
- }
- else{
- reserved.push(input.front());
- input.pop();
- }
- }
- bool flag=true;
- while(!reserved.empty())
- {
- if(reserved.top()==temp+1)
- {
- temp=reserved.top();
- reserved.pop();
- }
- else
- {
- cout<<"no";
- flag=false;
- break;
- }
- }
- if(flag==true)
- {
- cout<<"yes";
- }
- /*
- printQueue(input);
- printStack(output);
- printStack(reserved);
- */
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement