Cod sursa(job #1370554)

Utilizator turbowin120Amarandei-Stanescu Alexandru turbowin120 Data 3 martie 2015 15:40:54
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <stdio.h>
using namespace std;

const int k=666269;
const int N=1001337;
int val[N],urm[N],lst[N],nr,n,p;

void adauga(int x){
  int r=x&(k-1);
  val[++nr]=x;
  urm[nr]=lst[r];
  lst[r]=nr;
}


void sterge(int x){
  int r=x%k;
  p=lst[r];
  if(x==val[p]){
    lst[r]=urm[p];
    return;
  }
  while(urm[p]!=0&&val[urm[p]]!=x){
      p=urm[p];
  }
  if(urm[p]!=0) urm[p]=urm[urm[p]];


}
bool cauta(int x){
  int r=x%k;
  p=lst[r];
  while(p!=0){
    if(val[p]==x) return 1;
    p=urm[p];
  }
  return 0;



}

void citire(){
  FILE *in, * out;
  int a,b;
  in=fopen("hashuri.in","r");
  fscanf(in,"%d", &n);
  out=fopen("hashuri.out","w");
  for(int i=1;i<=n;i++){
    fscanf(in,"%d%d",&a,&b);
    if(a==1) adauga(b);
    if(a==2) sterge(b);
    if(a==3) fprintf(out,"%d\n",cauta(b));

  }

}

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