Cod sursa(job #2745805)

Utilizator linte_robertLinte Robert linte_robert Data 27 aprilie 2021 00:21:17
Problema Hashuri Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.68 kb
#include <iostream>
#include <cstring>
#include <vector>
#include <fstream>
using namespace std;

int numar_prim = 666013;

void operatie_1( vector < vector < int > > &tabel_hash, int numar ){
    int ok = 0;
    for( int i = 0; i < tabel_hash[ numar%numar_prim ].size() && ok == 0; i++ ){
        if( tabel_hash[numar%numar_prim][i] == numar ) ok = 1;
    }
    if( ok == 0 ) tabel_hash[numar%numar_prim].push_back( numar );
}

void operatie_2( vector < vector < int > > &tabel_hash, int numar ){
    int ok = 0, i;
    for( i = 0; i < tabel_hash[ numar%numar_prim ].size() && ok == 0; i++ ){
        if( tabel_hash[numar%numar_prim][i] == numar ) ok = 1;
    }
    if( ok == 1 ){
        tabel_hash[numar%numar_prim][i] = tabel_hash[numar%numar_prim][tabel_hash[numar%numar_prim].size()-1];
        tabel_hash[numar%numar_prim].pop_back();
    }
}

int operatie_3( vector < vector < int > > &tabel_hash, int numar ){
    int ok = 0;
    for( int i = 0; i < tabel_hash[ numar%numar_prim ].size() && ok == 0; i++ ){
        if( tabel_hash[numar%numar_prim][i] == numar ) ok = 1;
    }
    return ok;
}

int main(){
    vector < vector < int > > tabel_hash;
    ifstream fin( "hashuri.in" );
    ofstream fout( "hashuri.out" );
    for( int i = 0; i < numar_prim; i++ ){
        vector < int > v;
        tabel_hash.push_back(v);
    }
    int n;
    fin >> n;
    for( int i = 0; i < n; i++ ){
        int operatie, numar;
        fin >> operatie >> numar;
        if( operatie == 1 ) operatie_1( tabel_hash, numar );
        if( operatie == 2 ) operatie_2( tabel_hash, numar );
        if( operatie == 3 ) fout << operatie_3( tabel_hash, numar ) << endl;
    }
}