Cod sursa(job #235462)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 23 decembrie 2008 23:51:45
Problema Heapuri Scor Ascuns
Compilator cpp Status done
Runda Marime 0.82 kb
#include <stdio.h>

#define maxn 200010
#define inf 1000000001

int N, NR, IND;
int A[maxn], V[maxn], P[maxn];

int main()
{
	freopen("heapuri.in", "r", stdin);
	freopen("heapuri.out", "w", stdout);

	int i, j, best, cnt, cod, x;
	best = inf, cnt = 0;
	
	scanf("%d ", &N);

	for (i=1; i<=N; i++)
	{
		scanf("%d ", &cod);

		if (cod == 1)
		{
			IND++;
			scanf("%d ", &A[IND]);

			V[++NR] = IND;
			P[IND] = NR;

			if (A[IND] < best) best = A[IND], cnt = 0;
			if (A[IND] == best) cnt++;
		}

		if (cod == 2)
		{
			scanf("%d ", &x);

			if (A[x] == best) cnt--;
			V[P[x]] = V[NR--];
			P[V[x]] = x;

			if (cnt == 0)
			{
				best = inf, cnt = 0;

				for (j=1; j<=NR; j++)
				{
					if (A[V[j]] < best) best = A[V[j]], cnt = 0;
					if (A[V[j]] == best) cnt++;
				}
			}
		}

		if (cod == 3) printf("%d\n", best);
	}

	return 0;
}