Cod sursa(job #1058488)

Utilizator 3nTRoPYiorga dan 3nTRoPY Data 15 decembrie 2013 16:41:04
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.64 kb
#include <fstream>
#include <iostream>

using namespace std;

struct col
{
 			 int val;
 			 col *next;
};

struct linie
{
       col *prim;
			 linie *next; 			 
}*p;

void ad(int x)
{
 		 int lin=x/1000+1, i=0;
 		 linie *tl=p;
 		 col *tc, *adc;
 		 for(i=0;i<lin;i++)
 		 {
       tl=tl->next;
     }
     tc=tl->prim;
     while(tc->next)
     {
		      tc=tc->next;
					if(tc->val==x)
					   return;
     }
     adc=new col;
     adc->next=NULL;
     adc->val=x;
     tc->next=adc;
}

void st(int x)
{
 		 int lin=x/1000+1, i=0;
 		 linie *tl=p;
 		 col *tc;
 		 for(i=0;i<lin;i++)
			 tl=tl->next;
     tc=tl->prim;
     while(tc->next)
     {
					if(tc->next->val==x)
					{
					   tc->next=tc->next->next;
					   return;
				  }
				  tc=tc->next;
     }
}

int search(int x)
{
 		int lin=x/1000+1, i=0;
 		linie *tl=p;
 		for(i=0;i<lin;i++)
      tl=tl->next;
    col *tc=tl->prim->next;
    while(tc)
    {
			   if(tc->val==x)
			      return 1;
         tc=tc->next;
    }
 		return 0;
}

int main(int argc, char *argv[])
{
 		int n, op, x, i;
 		p=new linie;
 		p->prim=new col;
 		p->prim->next=NULL;
 		p->next=NULL;
 		linie *t=p;
 		for(i=0;i<2001;i++)
 		{
		    linie *ad=new linie;
		    ad->next=NULL;
		    ad->prim=new col;
		    ad->prim->next=NULL;
		    t->next=ad;
		    t=ad;
    }
 		ifstream fin("hashuri.in");
 		ofstream fout("hashuri.out");
 		fin>>n;
 		for(i=0;i<n;i++)
 		{
			  fin>>op>>x;
			  if(op==1)
			     ad(x);
        else if(op==2)
           st(x);
        else
           fout<<search(x)<<endl;
    }
    return 0;
}