Cod sursa(job #2199857)

Utilizator bigmixerVictor Purice bigmixer Data 29 aprilie 2018 13:04:52
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.43 kb
#pragma GCC optimize("O3")
#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#include<bits/stdc++.h>
#define ll long long
#define sz size
#define pb push_back
#define er erase
#define in insert
#define fr first
#define sc second
#define mp make_pair
#define pi pair
#define _ ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0);
#define rc(s) return cout<<s,0
using namespace std;
const int mnod=666013;
vector<int>::iterator it;

int n,x,t,mn;
vector<int>sir[666100];

vector<int>::iterator findnum(int x,int y){
     it=sir[x].begin();
     while(it!=sir[x].end()){
        if(*it==y) return it;
        else it++;
     }
     return  sir[x].end();
}
void inauntru(int x,int y){
     if(findnum(x,y)==sir[x].end()) sir[x].push_back(y);
}
void scoate(int x,int y){
     if(findnum(x,y)!=sir[x].end()) sir[x].erase(it);
}

int main(){
    freopen("hashuri.in", "r", stdin);
    freopen("hashuri.out", "w", stdout);
    cin >> n;
    for(int i=1;i<=n;i++){
        cin >> x >> t;
        mn=t%mnod;
        if(x==1){
            inauntru(mn,t);
            continue;
        }
        if(x==2){
            scoate(mn,t);
            continue;
        }
        if(x==3){
            if(findnum(mn,t)!=sir[mn].end()) cout<<1<<endl;
            else cout<<0<<endl;
        }
    }



}