Cod sursa(job #860624)

Utilizator razvan9310FMI - Razvan Damachi razvan9310 Data 20 ianuarie 2013 15:01:30
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <cstdio>
#include <vector>
#define mod 666013
using namespace std;

vector<int> H[mod];

void add(int x)
{
	const int m = x%mod;
	vector<int>::iterator i=H[m].begin(), stop=H[m].end();
	while (i != stop)
	{
		if (*i == x)
			return;
		++i;
	}
	H[m].push_back(x);
}

void del(int x)
{
	const int m = x%mod;
	vector<int>::iterator i=H[m].begin(), stop=H[m].end();
	while (i != stop)
	{
		if (*i == x)
		{
			*i = H[m].at(H[m].size()-1);
			H[m].pop_back();
			return;
		}
		++i;
	}
}

short search(int x)
{
	const int m = x%mod;
	vector<int>::iterator i=H[m].begin(), stop=H[m].end();
	while (i != stop)
	{
		if (*i == x)
			return 1;
		++i;
	}
	return 0;
}

int main()
{
	freopen("hashuri.in", "r", stdin);
	freopen("hashuri.out", "w", stdout);
	int n, i, c, x;
	scanf("%d", &n);
	for (i=0; i<n; ++i)
	{
		scanf("%d%d", &c, &x);
		switch (c)
		{
			case 1: add(x); break;
			case 2: del(x); break;
			case 3: printf("%d\n", search(x)); break;
		}
	}
	return 0;
}