Cod sursa(job #1344783)

Utilizator superman_01Avramescu Cristian superman_01 Data 16 februarie 2015 23:06:47
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <iostream>

#define MOD 660013
#define get_max(a,b) ((a)>(b)?(a):(b))
#define get_min(a,b) ((a)<(b)?(a):(b))

using namespace std;

ifstream in ( "hashuri.in" );
ofstream out ( "hashuri.out" );

vector < int > Hash[MOD] ;
 int N , key , type , elem  ;

vector < int > ::iterator Find ( int X ){
 for ( vector < int > ::iterator it = Hash[key].begin() ; it != Hash[key].end() ; ++it )
     if ( *it = X  )
     return it;
  return  Hash[key].end();
}


 void Add ( int X ){

   if ( Find(X) == Hash[key].end() )
        Hash[key].push_back(X);
 }

void Delete ( int X ){
  vector < int > ::iterator it = Find(X);
  if ( it != Hash[key].end() )
  Hash[key].erase(it);
}


 int main ( void ){
   int i , j ;
   in >> N ;
   for ( i = 1 ; i <= N ; ++i )
   {
      in >> type >> elem ;
      key = elem % MOD;
     if ( type == 1 ) Add ( elem ) ;
     if ( type == 2 ) Delete ( elem ) ;
     if ( type ==  3 ) out << ( Find(elem) != Hash[key].end()  ) << "\n" ;

   }
   return 0 ;
}