Cod sursa(job #808560)

Utilizator maritimCristian Lambru maritim Data 6 noiembrie 2012 22:04:37
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include<stdio.h>
#include<vector>
using namespace std;

FILE *f = fopen("hashuri.in","r");
FILE *g = fopen("hashuri.out","w");

typedef vector<int>::iterator it;

#define M 666013

int N,op,a;
vector<int> H[M];

void citire(void)
{
    fscanf(f,"%d %d",&op,&a);
}

inline void adaugare(int a)
{
    int x = a%M;

    for(it i=H[x].begin();i<H[x].end();i++)
        if(*i == a)
            return ;

    H[x].push_back(a);
}

inline void stergere(int a)
{
    int x = a%M;
    it i;

    for(i=H[x].begin();i<H[x].end();i++)
        if(*i == a)
        {
            *i = H[x].back();
            H[x].pop_back();
            return ;
        }
}

inline int exista(int a)
{
    int x = a%M;

    for(it i=H[x].begin();i<H[x].end();i++)
        if(*i == a)
            return 1;

    return 0;
}

int main()
{
    fscanf(f,"%d ",&N);
    for(int i=1;i<=N;i++)
    {
        citire();
        switch(op)
        {
            case 1 : adaugare(a);
                break;
            case 2 : stergere(a);
                break;
            default : fprintf(g,"%d\n",exista(a));
        }
    }
}