UVA 11995 I Can Guess the Data Structure!
7709 단어 struct
어떤 데이터 구조 일 수도 있다 면 시 뮬 레이 션 을 통 해 오류 가 발생 할 때 까지 알 수 있다.
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define MAXD 1010
int N, D, max[4 * MAXD], q[MAXD], s[MAXD];
void init()
{
for(D = 1; D < N + 2; D <<= 1);
memset(max, 0, sizeof(max[0]) * 2 * D);
}
void update(int i)
{
for(; i ^ 1; i >>= 1)
max[i >> 1] = std::max(max[i], max[i ^ 1]);
}
void Pop()
{
int i;
for(i = 1; i < D;)
{
if(max[i << 1] == max[i]) i <<= 1;
else i = i << 1 | 1;
}
max[i] = 0, update(i);
}
void solve()
{
int i, op, x, front, rear, top, isq, iss, isp;
front = rear = top = 0;
isq = iss = isp = 1;
for(i = 0; i < N; i ++)
{
scanf("%d%d", &op, &x);
if(op == 1)
{
if(isq) q[rear ++] = x;
if(iss) s[top ++] = x;
if(isp) max[D + i] = x, update(D + i);
}
else
{
if(isq)
{
if(front == rear) isq = 0;
else
{
if(q[front] != x) isq = 0;
++ front;
}
}
if(iss)
{
if(top == 0) iss = 0;
else
{
-- top;
if(s[top] != x) iss = 0;
}
}
if(isp)
{
if(max[1] != x) isp = 0;
else Pop();
}
}
}
if(isq + iss + isp > 1)
printf("not sure
");
else if(isq + iss + isp == 0)
printf("impossible
");
else printf("%s
", isq ? "queue" : (iss ? "stack" : "priority queue"));
}
int main()
{
while(scanf("%d", &N) == 1)
{
init();
solve();
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Ruby의 구조체 클래스은 접근자 메서드가 있는 속성 모음입니다. 클래스를 명시적으로 작성할 필요 없이. Struct 클래스는 구성원 및 해당 값 집합을 포함하는 새 하위 클래스를 생성합니다. 각 멤버에 대해 #attr_accessor 와...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.