UVA - 11995 I Can Guess the Data Structure! 데이터 구조 맞 추기 (STL 시 뮬 레이 션)
1666 단어 알고리즘 경기 입문 고전훈련 지침
두 가지 조작 이 있어 요. 1 x. x 를 집합 에 넣다.
2 x x 에서 추출 한 첫 번 째 요 소 는 x 입 니 다.
이 집합 이 우선 대기 열 이 냐, 일반 대기 열 이 냐, 창고 냐 고 물 었 다.아직 확실 하지 않 아, 불가능 해!
생각:
그냥 세 개 들 고 시 뮬 레이 션 하면 돼!
비교적 간단 하고 구체 적 으로 는 더 이상 말 하지 않 겠 습 니 다. 상세 한 것 은 코드 를 보십시오.
#include
#include
#include
#include
#include
using namespace std;
priority_queue,less >q;
stacks;
queueq2;
int main(){
int n;
while(scanf("%d",&n) == 1){
while(!q.empty())q.pop();
while(!q2.empty())q2.pop();
while(!s.empty())s.pop();
int x,y,z;
x = y = z = 1;
for (int i = 0; i < n; ++i){
int u,v;
scanf("%d %d",&u,&v);
if (u == 1){
q.push(v);
q2.push(v);
s.push(v);
continue;
}
if (x){
if (q.empty() || q.top() != v)x = 0;
else q.pop();
}
if (y){
if (q2.empty() || q2.front() != v)y = 0;
else q2.pop();
}
if (z){
if (s.empty() || s.top() != v)z = 0;
else s.pop();
}
}
if (x + y + z > 1)printf("not sure
");
else if (x + y + z == 0)printf("impossible
");
else if (x)printf("priority queue
");
else if (y)printf("queue
");
else printf("stack
");
}
return 0;
}