您的位置:首页 > 其它

UVa 11995

2016-07-13 13:53 211 查看
#include <cstdio>

#include <queue>

#include <stack>

using namespace std;

int a[1010] , b[1010];

int n;

bool Stack()

{
stack <int> s;
for(int i=1;i<=n;i++)
if(a[i] == 1)
{
s.push(b[i]);
}
else
{
if(s.empty()) return 0;
if(s.top() != b[i]) return 0;
s.pop();
}
return 1;

}

bool Queue()

{
queue <int> q;
for(int i=1;i<=n;i++)
if(a[i] == 1)
{
q.push(b[i]);
}
else
{
if(q.empty()) return 0;
if(q.front() != b[i]) return 0;
q.pop();
}
return 1;

}

bool Priority_queue()

{
priority_queue <int> p;
for(int i=1;i<=n;i++)
if(a[i] == 1)
{
p.push(b[i]);
}
else
{
if(p.empty()) return 0;
if(p.top() != b[i]) return 0;
p.pop();
}
return 1;

}

int main()

{
while(scanf("%d",&n)!=EOF)
{
for(int i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]);
bool r1 = Stack() , r2 = Queue() , r3 = Priority_queue();
if((r1)&&(!r2)&&(!r3)) printf("stack\n");
else if((!r1)&&(r2)&&(!r3)) printf("queue\n");
else if((!r1)&&(!r2)&&(r3)) printf("priority queue\n");
else if((!r1)&&(!r2)&&(!r3)) printf("impossible\n");
else printf("not sure\n");
}
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uva