Cod sursa(job #1574213)

Utilizator simaghitaSima Gheorghe Eugen simaghita Data 20 ianuarie 2016 12:35:23
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.52 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <set>
#include <map>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <bitset>

#define pii pair <int, int>
#define mp make_pair
#define pb push_back
#define mod 666013
using namespace std;
vector <int> H[mod];
int n;
vector<int>::iterator Find(int x)
{
    int code = x % mod;

    for(vector<int>::iterator it = H[code].begin(); it != H[code].end(); ++it)
    {
         if(*it == x)
            return it;
    }
    return H[code].end();
}
void Erase(int x)
{
    int code = x % mod;
    vector<int>::iterator it = Find(x);
    if(it != H[code].end())
        H[code].erase(it);
}
void Insert(int x)
{
    int code = x % mod;
    if(Find(x) == H[code].end())
        H[code].push_back(x);
}
int main()
{
    ifstream fin("hashuri.in");
    ofstream fout("hashuri.out");
    fin>>n;
    int op,x;
    for(int i  = 1; i <= n; ++i)
    {
        fin>>op>>x;
        if(op == 1)
        {
            Insert(x);
        }
        if(op == 2)
        {
            Erase(x);
        }
        if(op == 3)
        {
            int code = x % mod;
            vector<int>::iterator it = Find(x);
            if(it != H[code].end())
                fout<<"1\n";
            else
                fout<<"0\n";
        }
    }
    fin.close();
    fout.close();
    return 0;
}