Cod sursa(job #646537)

Utilizator tak3rStefan Mirea tak3r Data 11 decembrie 2011 10:45:27
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.35 kb
#include<cstdio>
#include<list>
#include<algorithm>

#define HASH_NUMBER 2039

using namespace std;

void addToHash( list< int > table[], int size, int value ){
  int index = value % size;
  table[ index ].push_back( value ); 
}

void removeFromHash( list< int > table[], int size, int value ){
  int index = value % size;
  list< int >::iterator it = find( table[index].begin(), table[index].end(), value );
  
  if( it != table[index].end() ){
    table[index].erase( it );
  }
  
}

int inHash( list< int > table[], int size, int value ){
  int index = value % size;
  list< int >::iterator it = find( table[index].begin(), table[index].end(), value );
  if( it != table[index].end() ){
    return 1;
  } else {
    return 0;
  }
}

int main(){
  
  freopen( "hashuri.in", "r", stdin );
  freopen( "hashuri.out", "w", stdout );
  
  int n;
  list< int > table[ HASH_NUMBER ];
  
  //setupHash( table );
  
  scanf( "%d", &n );
  
  for( int i=0; i<n; ++i ){
    int opt, val;
    scanf( "%d %d", &opt, &val );
    switch( opt ){
      case 1:
        addToHash( table, HASH_NUMBER, val );
        break;
      case 2:
        removeFromHash( table, HASH_NUMBER, val );
        break;
      case 3:
        printf( "%d\n", inHash( table, HASH_NUMBER, val ) );
        break;
      default:
        fprintf( stderr, " [ERROR] Unknown case: %d\n", opt );
    }
  }
  
  return 0;
  
}