Cod sursa(job #260583)

Utilizator catalina5catalina serban catalina5 Data 17 februarie 2009 11:30:26
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <stdio.h>
#include <vector>
#define MOD 666013
using namespace std;

int N;
vector<int> G[MOD];

vector<int>::iterator cauta(int x)
{
    int list=x%MOD;
    vector<int>::iterator it;

    for (it=G[list].begin();it!=G[list].end();++it)
        if (*it==x)
            return it;
    return G[list].end();
}

void baga(int x)
{
    int list=x%MOD;
    if (cauta(x)==G[list].end())
        G[list].push_back(x);
}

void sterge(int x)
{
    int list=x%MOD;
    vector<int>::iterator it=cauta(x);

    if (it!=G[list].end())
        G[list].erase(it);
}

int main()
{
    int op, x;

    freopen("hashuri.in","r",stdin);
    freopen("hashuri.out","w",stdout);
    scanf("%d",&N);
    while (N)
    {
         N--;
        scanf("%d %d",&op,&x);
        if (op==1)
        {
            baga(x);
            continue;
        }
        if (op==2)
        {
            sterge(x);
            continue;
        }
        printf("%d\n", cauta(x)!=G[x%MOD].end());
    }

    return 0;
}