Cod sursa(job #1815152)

Utilizator silkMarin Dragos silk Data 24 noiembrie 2016 21:18:50
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <cstdio>
#include <vector>
using namespace std;

const int P = 474707;

vector<int> h[P];

void erase(int x)
{
    int r = x % P;
    int L = h[r].size()-1;

    for(int i = 0; i < h[r].size(); ++i)
    if( h[r][i] ==  x)
    {
        h[r][i] = h[r][L];
        h[r].pop_back();
        return;
    }
}

int search(int x)
{
    int r = x % P;
    for(int i = 0; i < h[r].size(); ++i)
    if( h[r][i] == x ) return 1;
    return 0;
}

inline void add(int x)
{
    int r = x % P;
    if( !search(x) ) h[r].push_back(x);
}

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

    int N,i,x,op;

    scanf("%d",&N);
    for(i = 1; i <= N; ++i)
    {
        scanf("%d %d",&op,&x);
        if(op==1) add(x);
        else if(op==2) erase(x);
        else printf("%d\n", search(x) );
    }



return 0;
}