您的位置:首页 > 产品设计 > UI/UE

2018_2_3_I Can Guess the Data Structure!_STL_模拟

2018-02-03 21:56 453 查看
https://vjudge.net/problem/UVA-11995
#include<iostream>
4000
;
#include<stack>
#include<queue>
#include<cstdio>

using namespace std;
const int N=1000+10;

int n;
int op
,x
;

int main(){
while(scanf("%d",&n)!=EOF){
for(int i=0;i<n;i++)
scanf("%d%d",op+i,x+i);
stack<int> st;
queue<int> q;
priority_queue<int> heap;
int flag1=true,flag2=true,flag3=true;
for(int i=0;i<n;i++)
if(op[i]==1)st.push(x[i]);
else{
if(st.empty()){
flag1=false;break;
}int u=st.top();
st.pop();
if(u!=x[i]){
flag1=false;break;
}
}

for(int i=0;i<n;i++)
if(op[i]==1)q.push(x[i]);
else{
if(st.empty()){
flag2=false;break;
}int u=q.front();
q.pop();
if(u!=x[i]){
flag2=false;break;
}
}

for(int i=0;i<n;i++)
if(op[i]==1)heap.push(x[i]);
else{
if(heap.empty()){
flag3=false;break;
}int u=heap.top();
heap.pop();
if(u!=x[i]){
flag3=false;break;
}
}
if(!flag1&&!flag2&&!flag3){
puts("impossible");continue;
}
if(flag1&&!flag2&&!flag3){
puts("stack");continue;
}
if(!flag1&&flag2&&!flag3){
puts("queue");continue;
}
if(!flag1&&!flag2&&flag3){
puts("priority queue");continue;
}
puts("not sure");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: