Cod sursa(job #914076)

Utilizator Ionut228Ionut Calofir Ionut228 Data 13 martie 2013 21:22:56
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.36 kb
#include<fstream>
#include<vector>
#include<algorithm>

using namespace std;

ifstream fin("hashuri.in");
ofstream fout("hashuri.out");

#define MOD 72000

int n,a,k;
vector < vector <int> > h;

int f (long long x)
{
    x=x<<1;
    x=x*2;
    x=x+5;
    x=x/7;
    x=x>>9;
    return x%MOD;
}

int verificare (long long x)
{
    int lg;
    lg=h[f(x)].size();
    for(int i=0;i<lg;i++)
        if(h[f(x)][i]==x)
            return 1;
    return 0;
}

void stergere (int x)
{
    int aux,lg,nr;
    lg=h[f(x)].size();
    for(int i=0;i<lg;i++)
        if(h[f(x)][i]==x)
        {
            nr=f(x);
            aux=h[nr][i];
            h[nr][i]=h[nr][lg-1];
            h[nr][lg-1]=aux;
            h[nr].pop_back();
        }
}

void adaugare (long long x)
{
    /*
    int lg;
    bool ok=false;
    lg=h[f(x)].size();
    for(int i=0;i<lg;i++)
        if(h[f(x)][i]==x)
        {
            ok=true;
            break;
        }
    if(ok==false)
    */
        h[f(x)].push_back(x);
}

int main ()
{
    fin>>n;
    h.resize(MOD);
    for(int i=1;i<=n;i++)
    {
        fin>>a;
        fin>>k;
        if(a==1)
            adaugare(k);
        else if(a==2)
            stergere(k);
        else if(a==3)
            fout<<verificare(k)<<"\n";
    }
    fin.close();fout.close();
    return 0;
}