Cod sursa(job #766727)

Utilizator ioana26Ioana Andronescu ioana26 Data 11 iulie 2012 23:04:00
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <vector>
#include <stdio.h>

using namespace std;

#define MAXN	700027

int n, x, tip_operatie;
vector<int> tabel_dispersie[MAXN];

vector<int>::iterator cauta (int x) {
	int k = x % MAXN;
	vector<int>::iterator iter = tabel_dispersie[k].begin();

	while (iter != tabel_dispersie[k].end()) {
		if (*iter == x)
			return iter;	
		iter++;
	}
	return tabel_dispersie[k].end();
}

void insereaza (int x) {
	int k = x % MAXN;
	if (cauta(x) == tabel_dispersie[k].end())
		tabel_dispersie[k].push_back(x);
}

void sterge (int x) {
	int k = x % MAXN;
	vector<int>::iterator iter = cauta(x);
	if (iter != tabel_dispersie[k].end())
		tabel_dispersie[k].erase(iter);
}

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

	int i;
	scanf("%d", &n);	
	for (i = 0; i < n; i++) {
		scanf("%d %d", &tip_operatie, &x);
		switch (tip_operatie) {
			case 1: insereaza(x);	break;
			case 2: sterge(x);		break;
			case 3: cauta(x);
					printf("%d\n", cauta(x) != tabel_dispersie[x % MAXN].end());
					break;
		}
	} 
	return 0;
}