Cod sursa(job #381300)

Utilizator iulia609fara nume iulia609 Data 10 ianuarie 2010 11:09:33
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include<stdio.h>
#include<vector>
#define P 666013
using namespace std;

vector<int>H[P];
int N;


int find(int x)
{
	int i, rest;

    rest = x%P;

    for (i = 0; i < H[rest].size(); i++)
        if (H[rest][i] == x)
            return i;

    return -1;
}

void add(int x)
{
	int rest;
	
	rest = x%P;
	if (find(x) == -1) H[rest].push_back(x);
}

void del(int x)
{
	int rest, aux;
	
	rest = x%P;

    if (find(x) != -1)
    {
        aux = H[rest][find(x)];
		H[rest][find(x)] = H[rest][H[rest].size() - 1];
		H[rest][H[rest].size() - 1] = aux;
		
        H[rest].pop_back();
    }
}

void switch1(int ind, int nr)
{
	if (ind == 1) add(nr);
		else if (ind == 2) del(nr);
			else if (ind == 3) 
				{
					if(find(nr) == -1) printf("0\n");
						else printf("1\n");
				}
}

int main()
{
	int i, ind, nr;
	
	freopen("hashuri.in", "r", stdin);
	freopen("hashuri.out", "w", stdout);
	
	scanf("%d", &N);
	for(i = 1; i <= N; i++)
	{
		scanf("%d %d", &ind, &nr);
		switch1(ind, nr);
	}
	
	return 0;
}