Cod sursa(job #753938)

Utilizator cat_red20Vasile Ioana cat_red20 Data 30 mai 2012 20:47:05
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include<stdio.h>
#define P 666013
#include<list>
using namespace std;
int n;
list < int > v[P+1];
FILE *fin,*fout=fopen("hashuri.out","w");

void adauga(int x)
{
    v[x%P].push_back(x);
}

void sterge(int x)
{
    int t=x%P,ok=0;
    if(!v[t].empty())
    {
        list <int>::iterator it;
        for(it=v[t].begin();it!=v[t].end();it++)
        {
            while(*it==x)
            {
                it=v[t].erase(it);
                ok=1;
            }
            if(ok==1)
            break;
        }
    }

}

int exista(int x)
{
	int t=x%P;
	if(v[t].empty())
		return 0;
	list <int>::iterator it;
	for(it=v[t].begin();it!=v[t].end();it++)
	{
        if(*it==x)
			return 1;
	}  
	return 0;
}

void citire()
{
    int x,op;
    fin=fopen("hashuri.in","r");
    fscanf(fin,"%d",&n);
    for(int i=1;i<=n;i++)
    {
        fscanf(fin,"%d %d",&op,&x);
        if(op==1)
        adauga(x);
        else if(op==2)
        sterge(x);
        else if(op==3)
        fprintf(fout,"%d\n",exista(x));
    }
}

int main()
{
    citire();
    return 0;
}