Cod sursa(job #559776)

Utilizator laurionLaurentiu Ion laurion Data 18 martie 2011 02:29:34
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<fstream>
#include<vector>
#define MOD 666013
#define adauga 1
#define sterge 2
#define query 3
using namespace std;
vector<int> H[MOD];
inline void push(int val)
{
    int x=val%MOD;
    H[x].push_back(val);
}
inline void pop(int val)
{
    int x=val%MOD;
    for(int i=0;i<H[x].size();++i)
    {
        if(H[x][i]==val)
        {
            H[x][i]=H[x][H[x].size()-1];//pun acolo ulima valoare, ca sa nu mai ramana deloc valoarea de sters
            H[x].pop_back();
            return;
        }
    }
}
inline bool find(int val)
{
    int x=val%MOD;
    for(int i=0;i<H[x].size();++i)
        if(H[x][i]==val)
            return true;
    return false;
}
int main()
{
    ifstream fin("hashuri.in");
    ofstream fout("hashuri.out");

    int n,tip,val;

    for(fin>>n;n;--n)
    {
        fin>>tip>>val;
        switch (tip)
        {
        	case adauga: push(val);
        		break;
            case sterge: pop(val);
                break;
            case query: fout<<(int)find(val)<<'\n';
        }

    }

    return 0;

}