Cod sursa(job #641702)

Utilizator yamahaFMI Maria Stoica yamaha Data 29 noiembrie 2011 10:54:28
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <stdio.h>
#include <vector>

using namespace std;
#define mod 670013
int n;
vector<int> v[mod];

vector<int>::iterator cauta(int);
void add(int);
void erase(int);

int main (void)
{
    int i,op,x;
    freopen("hashuri.in","r",stdin);
    freopen("hashuri.out","w",stdout);
    
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d%d",&op,&x);
        if(op==1) // adauga
           add(x);
        else if(op==2) // sterge
           erase(x);
        else if(op==3) // return 1 sau 0 daca x exista
           printf("%d\n",cauta(x)!=v[x%mod].end());
    }
    return 0;
}

void add(int x)
{
    int i=x%mod;
    if(cauta(x)==v[i].end()) v[i].push_back(x);
}

void erase(int x)
{
    int i=x%mod;
    vector<int>::iterator it=cauta(x);
    if(it!=v[i].end()) v[i].erase(it);
}

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