Cod sursa(job #1198190)

Utilizator DjokValeriu Motroi Djok Data 14 iunie 2014 20:44:01
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include<fstream>
#include<algorithm>
#define MOD 666013
using namespace std;

typedef struct lnod {
      int info;
      lnod *next;  
}*nod;

int n,tip,x;
nod a[666018];
bool u;

void add(int x,nod &y) {
    nod p=new lnod;
    p->info=x;
    p->next=y;
    y=p; 
}

void del(int x) {   
  nod p=a[x%MOD],r;
  while(p)
  if(p->info==x) if(p==a[x%MOD]) if(p->next==NULL) { a[x%MOD]=NULL;delete p; return; }
                                 else { a[x%MOD]=p->next;delete p; return; }
                 else {
                        r->next=p->next;
                        delete p;
                        return;
                      }
  else r=p,p=p->next;                                      
}

bool find(int x) {
    nod p;
    for(p=a[x%MOD];p;p=p->next)
    if(p->info==x) return 1;
    return 0; 
}

int main()
{  
  ifstream cin("hashuri.in");
  ofstream cout("hashuri.out");  
  
  cin>>n; 
  
  while(n--)
  {
    cin>>tip>>x;
    u=find(x);
    if(tip==1 && !u) add(x,a[x%MOD]);
    if(tip==2 && u) del(x);
    if(tip==3) cout<<u<<'\n';
  }
    
 return 0;   
}