Cod sursa(job #667555)

Utilizator Smaug-Andrei C. Smaug- Data 23 ianuarie 2012 13:05:12
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <cstdio>
#include <cstring>

#define LGMAXN 6
#define MOD 80011 //666013
#define ERR -1

int H[MOD][LGMAXN];

inline int find(int x){
  
  int key=x%MOD, i;
  for(i=0; i<LGMAXN; i++)
    if(H[key][i]==x)
      return i;

  return ERR;

}

inline void add(int x){

  int key=x%MOD, i;
  if(find(x)==ERR)
    for(i=0; i<LGMAXN; i++)
      if(!H[key][i]){
	H[key][i]=x;
	break;
      }

}

inline void remove(int x){
  
  int key=x%MOD, i;
  if((i=find(x))!=ERR)
    H[key][i]=0;

}  

int main(){

  freopen("hashuri.in", "r", stdin);
  freopen("hashuri.out", "w", stdout);

  int N, a, b, i;

  memset(H, 0, sizeof(H));
  
  scanf("%d", &N);
  for(i=0; i<N; i++){
    scanf("%d%d", &a, &b);

    if(a == 1)
      add(b);
    else if(a == 2)
      remove(b);
    else if(a == 3)
      printf("%d\n", (find(b)!=ERR)? 1: 0);

  }

  return 0;

}