UVA 11995

来源:互联网 发布:windows7 ping 端口 编辑:程序博客网 时间:2024/06/07 07:14

 刷水题刷的比较爽,这题也是比较简单的一题,pat上刚刚也考过一个pop sequence与这题类似,直接模拟即可,分别建立stack,queue,priority_queue然后分别模拟push,pop,最后判断即可。 代码:

#include <iostream>#include <cstdio>#include <algorithm>#include <stack>#include <queue>using namespace std;int main(){int n,op,num;bool is_stack, is_queue, is_priority;while(scanf("%d",&n)!=EOF){stack<int> adt_1;queue<int> adt_2;priority_queue<int> adt_3;is_stack = true;is_queue = true;is_priority = true;for(int i=0;i<n;i++){scanf("%d%d",&op,&num);if(is_stack||is_queue||is_priority){switch(op){case 1:adt_1.push(num);adt_2.push(num);adt_3.push(num);break;case 2:if(is_stack){if((adt_1.empty())||(adt_1.top()!=num))is_stack = false;elseadt_1.pop();}if(is_queue){if((adt_2.empty())||(adt_2.front()!=num))is_queue = false;elseadt_2.pop();}if(is_priority){if((adt_3.empty())||(adt_3.top()!=num))is_priority = false;elseadt_3.pop();}break;}}}if(is_stack&&!is_queue&&!is_priority){printf("stack\n");}else if(!is_stack&&is_queue&&!is_priority){printf("queue\n");}else if(!is_stack&&!is_queue&&is_priority){printf("priority queue\n");}else if(!is_stack&&!is_queue&&!is_priority){printf("impossible\n");}else{printf("not sure\n");}}return 0;}