Cod sursa(job #734226)

Utilizator yamahaFMI Maria Stoica yamaha Data 13 aprilie 2012 20:43:45
Problema Hashuri Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <stdio.h>
#include <vector>
#include <fstream>

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

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

int main (void)
{
    int i,op,x;
    ifstream f("hashuri.in");
    ofstream g("hashuri.out");
    
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>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
           g<<(cauta(x)!=v[x%mod].end())<<endl;
    }
    return 0;
}

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

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

inline 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();
}