Cod sursa(job #1526910)

Utilizator Corneliu10Dumitru Corneliu Corneliu10 Data 17 noiembrie 2015 17:08:27
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <cstdio>
#include <vector>
#define M 666013
using namespace std;

vector <int> H[M];
const int a = 43;
vector <int>::iterator it;

void Insert(int x)
{
    int val = ((x * a)) % M;
    for(it = H[val].begin(); it!=H[val].end() ; it++)
        if(*it == x) return;
    H[val].push_back(x);
}

void Delete(int x)
{
    int val = ((x * a)) % M;
    for(it = H[val].begin(); it!=H[val].end() ; it++)
        if(*it == x) {H[val].erase(it);return;}
}

int Search(int x)
{
    int val = ((x * a)) % M;
    for(it = H[val].begin(); it!=H[val].end() ; it++)
        if(*it == x) return 1;
    return 0;
}

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

    scanf("%d",&n);

    for(i=0;i<n;i++)
    {
        scanf("%d %d",&p,&x);

        switch(p)
        {
            case 1:
            {
                Insert(x);
                break;
            }
            case 2:
            {
                Delete(x);
                break;
            }
            case 3:
            {
                printf("%d\n",Search(x));
            }
        }
    }
}