Cod sursa(job #1368674)

Utilizator andreeadeacAndreea Ioana Deac andreeadeac Data 2 martie 2015 19:18:57
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#include<vector>
using namespace std;

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

const int MOD=666013; //?
const int dim=1000000;
int lst[MOD],val[dim],urm[dim],m;
int n; // cate am pus pana acum

void adauga(int x, int rest){
    n++;
    val[n] = x;
    urm[n] = lst[rest];
    lst[rest] = n;
}
void sterge(int x, int rest){
    int p=lst[rest];
    if (x == val[p])
    {
        lst[rest] = urm[p];
        return;
    }
    while(urm[p]!=0){
        if(val[urm[p]]==x){
            urm[p]=urm[urm[p]];
            return;
        }
        p=urm[p];
    }
}
int verifica(int x, int rest){
    int p=lst[rest];
    while(p!=0){
        if(val[p]==x)
            return 1;
        p=urm[p];
    }
    return 0;
}

int main()
{
    in>>m;
    int i,t,x,rest;
    for(i=1;i<=m;i++){
        in>>t>>x;
        rest=x%MOD;
        if(t==1)
            adauga(x,rest);
        if(t==2)
            sterge(x,rest);
        if(t==3)
            out<<verifica(x,rest)<<"\n";
    }
    return 0;
}