Cod sursa(job #1050346)

Utilizator andreeaghetuUNIBUC andreeaghetu andreeaghetu Data 8 decembrie 2013 15:13:37
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in ("hashuri.in");
ofstream out ("hashuri.out");
vector <int> v[666013];

void swap1(int &a, int &b)
{
    int aux=a;
    a=b;
    b=aux;
}
bool cautare(int x)
{
    int z=x%666013;
    if (v[z].empty())
        return 0;
    for (int i=0;i<v[z].size();++i)
    {
        if (v[z][i]==x)
            return 1;
    }
    return 0;
}
void push(int x)
{
    if (cautare(x)==0)
        v[x%666013].push_back(x);
}
void pop(int x)
{
    if (cautare(x)==1)
    {
        int z=x%666013;
        for (int i=0;i<v[z].size();++i)
        {
            if (v[z][i]==x)
            {
                swap1(v[z][i], v[z][v[z].size()-1]);
                v[z].pop_back();
                return;
            }
        }
    }

}

int main()
{

    int N, op, x;
    in>>N;
    for (int i=0;i<N;++i)
    {
        in>>op>>x;
        switch(op)
        {
        case 1:
            push(x);
            break;
        case 2:
            pop(x);
            break;
        case 3:
            out<<cautare(x)<<'\n';
            break;
        }
    }

    return 0;
}