Cod sursa(job #424983)

Utilizator gabipurcaruGabi Purcaru gabipurcaru Data 25 martie 2010 13:22:33
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.4 kb
#include <list>
#include <fstream>
using namespace std;

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

list<int> H[100020];
list<int>::iterator it;

int n,i,j,op,val;
int hash_func(int val)
{
    return val%n;
}

int main()
{
    in>>n;
    for(i=1; i<=n; i++)
    {
        in>>op>>val;
        if(op == 1)
        {
            if(H[hash_func(val)].empty())
            {
                H[hash_func(val)].push_back(val);
                continue;
            }
            it = H[hash_func(val)].begin();
            while(it != H[hash_func(val)].end() && *it != val)
                it++;
            if(it == H[hash_func(val)].end())
                H[hash_func(val)].push_back(val);
        }
        else if(op == 2)
        {
            if(H[hash_func(val)].empty())
                continue;
            
            it = H[hash_func(val)].begin();
            while(it != H[hash_func(val)].end() && *it != val)
                it++;
            if(it != H[hash_func(val)].end())
                H[hash_func(val)].erase(it);
        }
        else if(op == 3)
        {
            if(H[hash_func(val)].empty())
            {
                out<<0<<'\n';
                continue;
            }

            it = H[hash_func(val)].begin();
            while(it != H[hash_func(val)].end() && *it != val)
                it++;
            out <<(it != H[hash_func(val)].end())<<'\n';
        }
    }
    return 0;
}