Cod sursa(job #2659512)

Utilizator mihaipriboimihailucapriboi mihaipriboi Data 16 octombrie 2020 21:53:15
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
// Mihai Priboi

#include <bits/stdc++.h>
#define MOD 666013
#define MAX_N 2000000000

using namespace std;

vector<int> f[MOD];

void adauga( int x ) {
  unsigned int n, i;
  int poz;
  poz = x % MOD;
  i = 0;
  n = f[poz].size();
  while( i < n && f[poz][i] != x ) i++;
  if( i == n )
    f[poz].push_back(x);
}

void scoate( int x ) {
  unsigned int n, i;
  int poz;
  poz = x % MOD;
  i = 0;
  n = f[poz].size();
  while( i < n && f[poz][i] != x ) i++;
  if( i < n && f[poz][i] == x )
    f[poz].erase(f[poz].begin() + i);
}

int cauta( int x ) {
  unsigned int n, i;
  int poz;
  poz = x % MOD;
  i = 0;
  n = f[poz].size();
  while( i < n && f[poz][i] != x ) i++;
  if( i == n )
    return 0;
  return 1;
}

int main() {
  FILE *fin, *fout;
  int n, i, op, x;
  fin = fopen( "hashuri.in", "r" );
  fout = fopen( "hashuri.out", "w" );
  fscanf( fin, "%d", &n );
  for( i = 0; i < n; i++ ) {
    fscanf( fin, "%d%d", &op, &x );
    switch(op) {
    case 1:
      adauga(x);
      break;
    case 2:
      scoate(x);
      break;
    case 3:
      fprintf( fout, "%d\n", cauta(x) );
      break;
    }
  }
  fclose( fin );
  fclose( fout );
  return 0;
}