Cod sursa(job #1612262)

Utilizator arvlgeArdeleanu Vlad George arvlge Data 24 februarie 2016 19:27:35
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include<stdio.h>
#include<vector>

#define dim 670000

using namespace std;

vector<int> has[dim];

inline vector<int>::iterator se(int x){
    int lista=x%dim;

    vector<int>::iterator it;

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

inline void update_1 (int x){
    int lista = x%dim;

    if( se(x)==has[lista].end())

        has[lista].push_back(x);
}

inline void update_2 (int x){
    int lista = x%dim;

    vector<int>::iterator it =se(x);

    if( it!= has[lista].end())
        has[lista].erase(it);
}

int n,op,x;

int main(){
    freopen("hashuri.in","r",stdin);
    freopen("hashuri.out","w",stdout);

    for(scanf("%d",&n);n;n--){
        scanf("%d%d",&op,&x);

        switch(op){
            case 1: {
                update_1(x);
            }
            case 2: {
                update_2(x);
            }
            case 3: {
                if( se(x)== has[x%dim].end())
                    printf("%d\n",0);
                else
                    printf("%d\n",1);
            }
        }
    }

    return 0;
}