Cod sursa(job #899406)

Utilizator robertgbrrobertgbr robertgbr Data 28 februarie 2013 14:19:14
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.39 kb
#include <cstdio>
#include <vector>                            //1-ADD,2-DELETE,3-CHECK
#define L 1000111
#define lungime 666013
using namespace std;
vector<int> H[lungime];
int n;

inline int compute_function(int x)
{
    return x%lungime;
}

void ADD(int element)
{
    int a=compute_function(element);
    H[a].push_back(element);
}
void DELETE(int element)
{
    int a=compute_function(element);
    vector<int>::iterator it;
    for(it=H[a].begin();it!=H[a].end();it++)
    {
        if(*it==element)
        {
            *it=0;
            break;
        }
    }
}

bool CHECK(int element)
{
    int a=compute_function(element);
    vector<int>::iterator it;
    for(it=H[a].begin();it!=H[a].end();it++)
    {
        if(*it==element)
        {
            return 1;
        }
    }
    return 0;
}

int main()
{
    FILE *inFile;
    FILE *outFile;
    inFile=fopen("hashuri.in","r");
    outFile=fopen("hashuri.out","w");
    fscanf(inFile,"%d",&n);

    for(int i=1;i<=n;i++)
    {
        int op,x;
        fscanf(inFile,"%d %d",&op,&x);
        if(op==1)
        {
            ADD(x);
        }
        if(op==2)
        {
            DELETE(x);
        }
        if(op==3)
        {
            bool oki=CHECK(x);
            fprintf(outFile,"%d\n",oki);
        }
    }

    fclose(inFile);
    fclose(outFile);
    return 0;
}