Cod sursa(job #1047929)

Utilizator EllenaElena D Ellena Data 4 decembrie 2013 23:49:03
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.31 kb
#include<iostream>
#include<fstream>
using namespace std;
struct nod
  {int val;
   nod *urm;
  };
nod*prim;
void op1(int y)
{ if(prim==NULL) 
        { prim=new nod;
          prim->val=y;
		  prim->urm=NULL;
		}
  else { nod*p=prim,*q=NULL;
         while(p!=NULL&&p->val<y)
		     {  q=p;
		        p=p->urm;
			 }
         if (p==NULL) //e cel mai mare element
		    { nod*nou=new nod;
		      nou->val=y;
			  nou->urm=NULL;
			  q->urm=nou;
			}
		 else if(p->val>y)
		    { nod*nou=new nod;
		      nou->val=y;
			  nou->urm=p;
			  q->urm=nou;
			}
		// else return;
        }
}
void op2(int y)
{ if(prim->val==y) 
        { nod*p=prim;
          prim=prim->urm;
		  delete p;
		}
  else { nod*p=prim,*q=NULL;
         while(p!=NULL&&p->val<y)
		     {  q=p;
		        p=p->urm;
			 }
		 if(p==NULL||p->val>y) return;
		 else if(p->val==y)
		    { q->urm=p->urm;
		      delete p;
			}
        }
}
int op3(int y)
{nod*p=prim;
while(p!=NULL&&p->val<y)
  p=p->urm;
if(p==NULL||p->val!=y) return 0;
else return 1;
}
int main()
{int n,i,x,y;
ifstream f("hashuri.in");
f>>n;
if(n==0) return 0;

ofstream g("hashuri.out");
for(i=0;i<n;i++)
	{ f>>x>>y;
      if(x==1) op1(y);
	  else if(x==2) op2(y);
	  else g<<op3(y)<<endl;
	}
f.close();
g.close();
return 0;
}