Cod sursa(job #731923)

Utilizator NistorIoanaNistor Ioana- Anamaria NistorIoana Data 9 aprilie 2012 14:09:27
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <vector>
#include <list>
#include <fstream>
using namespace std;
 
#define HMAX 666013
list <int> a[HMAX];
int N,op,x;
 
int find(int x){
	int p=x%HMAX;
	for (list<int>:: iterator it=a[p].begin(); it!=a[p].end(); it++)
		if (*it==x)
			return 1;
	return 0;
}
 
void add(int x){
	if (find(x)) 
		return;
	a[x%HMAX].push_back(x);
}
 
void remove(int x){
	int p = x % HMAX;
	for (list<int> :: iterator it = a[p].begin(); it != a[p].end(); it++)
		if (*it == x){
			*it = *(--a[p].end());
			a[p].pop_back();
			return;
		}
	}
 
int main(){
	freopen("hashuri.in", "r", stdin);
	freopen("hashuri.out", "w", stdout);
	scanf("%d", &N);
	//ifstream f ("hashuri.in");
	//ofstream g ("hashuri.out");
	//f>>N;
	for (int i=0; i<N; i++){
		scanf("%d %d", &op, &x);
		//f>>op>>x;
		if (op==1)
			add(x);
		else 
			if (op==2)
				remove(x);
			else
				printf("%d\n", find(x));
				//g<<find(x)<<endl;
	}
	return 0;
}