Cod sursa(job #2152175)

Utilizator ReksioCroftOctavian Florin Staicu ReksioCroft Data 5 martie 2018 12:16:51
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.43 kb
#include <stdio.h>
#include <vector>
#define mod  702113

using namespace std;

vector <int> v[mod];

void inserare( int nr ) {
  int sertar, i, ok;
  sertar = nr % mod;
  ok = 0;   ///cat timp nu am gasit nr in sertar, il cautam
  for ( i = 0; i < v[sertar].size() && ok == 0; i++ ) {
    if ( v[sertar][i] == nr )
      ok = 1;
  }
  if ( ok == 0 ) ///daca nr nu se afla in multime, il adaugam
    v[sertar].push_back( nr );
}

void stergere( int nr ) {
  int sertar, i, ok;
  sertar = nr % mod;
  ok = 0;   ///cat timp nu am gasit numarul
  for ( i = 0; i < v[sertar].size() && ok == 0; i++ ) {
    if ( v[sertar][i] == nr ) {
      v[sertar].erase( v[sertar].begin() + i );
      ok = 1;
    }
  }
}

int gaseste( int nr ) {
  int sertar = nr % mod;
  for ( vector<int>::iterator it = v[sertar].begin(); it != v[sertar].end(); it++ )
    if ( *it == nr )
      return 1;
  return 0;
}

int main() {
  int n, ver, nr, i;
  FILE *fin, *fout;
  fin = fopen( "hashuri.in", "r" );
  fout = fopen( "hashuri.out", "w" );
  fscanf( fin, "%d", &n );
  for ( i = 0; i < n; i++ ) {
    fscanf( fin, "%d%d", &ver, &nr );
    if ( ver == 1 )      ///inserarea in multime
      inserare( nr );
    else if ( ver == 2 ) ///stergem nr daca se afla in multime
      stergere( nr );
    else
      fprintf( fout, "%d\n", gaseste( nr ) );
  }
  fputc( '\n', fout );
  fclose( fin );
  fclose( fout );
  return 0;
}