Cod sursa(job #1451597)

Utilizator DjokValeriu Motroi Djok Data 17 iunie 2015 20:24:35
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include<bits/stdc++.h>
using namespace std;

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

const int MOD=666013; 

int i,t,op,x;
bool u;
nod H[666015];

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

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

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

int main()
{
  ifstream cin("hashuri.in");
  ofstream cout("hashuri.out");

  ios_base::sync_with_stdio(0);

  for(cin>>t;t;--t)
  {
    cin>>op>>x; u=Find(x);
    if(op==1 && !u) add(x,H[x%MOD]);
    if(op==2 && u) del(x);
    if(op==3) cout<<u<<'\n';
  }

 return 0;
}