Cod sursa(job #1502910)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 15 octombrie 2015 10:27:37
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.4 kb
#include <bits/stdc++.h>

using namespace std;

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

const int MOD = 666013;
const int BMax = 30;

vector < int > Hash[MOD];

inline vector < int > ::iterator Search(const int &x){
    vector < int > ::iterator it;
    int line = x % MOD;
    for(it = Hash[line].begin(); it != Hash[line].end(); it++){
        if(*it == x){
            return it;
        }
    }
    return Hash[line].end();
}

int pos = BMax - 1;
char buffer[BMax];
#define Advance() (++pos == BMax) ? fin.read(buffer, BMax), pos = 0 : 0
inline void Read(int &x){
    for(;!isdigit(buffer[pos]); Advance());
    for(x = 0; isdigit(buffer[pos]); Advance()) x = x * 10 + (buffer[pos] - '0');
}

int main(){
    vector < int > ::iterator ans;
    int n, type, x;
    Read(n);
    while(n--){
        Read(type); Read(x);
        ans = Search(x);
        if(type == 1){
            if(ans == Hash[x % MOD].end()){
                Hash[x % MOD].push_back(x);
            }
        } else {
            if(type == 2){
                if(ans != Hash[x % MOD].end()){
                    Hash[x % MOD].erase(ans);
                }
            } else {
                if(ans == Hash[x % MOD].end()){
                    fout << "0\n";
                } else {
                    fout << "1\n";
                }
            }
        }
    }
    return 0;
}