Cod sursa(job #2110808)

Utilizator AndreiStanescuAlloys Nokito AndreiStanescu Data 21 ianuarie 2018 13:24:16
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.27 kb
#include<bits/stdc++.h>
#define mod 666013
using namespace std;

int N;

vector <int> T[mod];

//imi definesc functia hash ca fiind h[x]=x%mod
//valorile sinonime le plasez intr-o lista inlantuita. In vectorul T pe poz i voi retine un pointer catre inceputul listei inlantuite formate din taote valorile x pentru care h[x]=i

vector<int>::iterator caut(int x)
{
    int h=x%mod;
    vector<int>:: iterator it;
    for(it=T[h].begin();it!=T[h].end();it++)
        if(*it==x) return it;
    return T[h].end();
}

inline void add(int x)
{
    int h=x%mod;
    vector<int>::iterator it=caut(x);
    if(it==T[h].end())
        T[h].push_back(x);
}


inline void sterg(int x)
{
    int h=x%mod;
    vector<int>::iterator it=caut(x);
    if(it!=T[h].end())
        T[h].erase(it);
}


void read_solve()
{
    int op,val;
    freopen("hashuri.in","r",stdin);
    freopen("hashuri.out","w",stdout);
     for(scanf("%d",&N);N;N--)
     {
         scanf("%d %d",&op,&val);
         if(op==1)
         {
             add(val);
             continue;
         }
         if(op==2)
         {
             sterg(val);
             continue;
         }
         printf("%d\n", caut(val)!=T[val%mod].end());
     }
}

int main()
{
    read_solve();
}