Cod sursa(job #658950)

Utilizator StefanLacheStefan Lache StefanLache Data 9 ianuarie 2012 20:33:09
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include<stdio.h>
#include<vector>
#define M 666013
using namespace std;
vector<int> H[M];
vector<int>::iterator gaseste(int x)
{
    int lista=x%M;
    vector<int>::iterator i;
    for(i=H[lista].begin();i!=H[lista].end();++i)
        if(*i==x)
            return i;
    return H[lista].end();
}
void insereaza(int x)
{
    int lista=x%M;
    if(gaseste(x)==H[lista].end())
        H[lista].push_back(x);
}
void sterge(int x)
{
    int lista=x&M;
    vector<int>::iterator i=gaseste(x);
    if(i!=H[lista].end())
        H[lista].erase(i);
}
int main()
{
    int n;
    FILE *f=fopen("hashuri.in","rt");
    FILE *g=fopen("hashuri.out","wt");
    int op,x,i;
    fscanf(f,"%i",&n);
    for(i=0;i<n;i++)
    {
        fscanf(f,"%i%i",&op,&x);
        if(op==1)
                insereaza(x);
        if(op==2)
                sterge(x);
        if(op==3)
            fprintf(g,"%i\n",gaseste(x)!=H[x%M].end());
    }
    fclose(f);
    fclose(g);
    return 0;
}