Cod sursa(job #2745796)

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

int numar_prim = 666013;

void operatie_1( vector < int > &tabel_hash, int numar, vector < int > &elemente_diferite ){
    if( tabel_hash[numar%numar_prim] == numar_prim ){
        tabel_hash[numar%numar_prim] = numar;
    }
    else{
        if( tabel_hash[numar%numar_prim] != numar ){
            elemente_diferite.push_back(numar);
        }
    }
}
void operatie_2( vector < int > &tabel_hash, int numar, vector < int > &elemente_diferite ){
    if( tabel_hash[numar%numar_prim] == numar ){
        tabel_hash[numar%numar_prim] = numar_prim;
    }
    else{
        if( tabel_hash[numar%numar_prim] != numar_prim ){
            int ok = 0, i;
            for( i = 0; i < elemente_diferite.size() && ok == 0; i++ ){
                if( elemente_diferite[i] == numar ) ok = 1;
            }
            elemente_diferite[i] = elemente_diferite[elemente_diferite.size()-1];
            elemente_diferite.pop_back();
        }
    }
}
int operatie_3( vector < int > &tabel_hash, int numar, vector < int > &elemente_diferite ){
    if( tabel_hash[numar%numar_prim] == numar ) return 1;
    else{
        if( tabel_hash[numar%numar_prim != numar_prim] ){
            int ok = 0;
            for( int i = 0; i < elemente_diferite.size() && ok == 0; i++ ){
                if( elemente_diferite[i] == numar ) ok = 1;
            }
            return ok;
        }
    }
}
int main(){
    vector < int > tabel_hash;
    vector < int > elemente_diferite;
    ifstream fin( "hashuri.in" );
    ofstream fout( "hashuri.out" );
    int n;
    fin >> n;
    for( int i = 0; i < numar_prim; i++ ){
        tabel_hash.push_back( numar_prim );
    }
    for( int i = 0; i < n; i++ ){
        int operatie, numar;
        fin >> operatie >> numar;
        if( operatie == 1 ) operatie_1( tabel_hash, numar, elemente_diferite );
        if( operatie == 2 ) operatie_2( tabel_hash, numar, elemente_diferite );
        if( operatie == 3 ) fout << operatie_3( tabel_hash, numar, elemente_diferite ) << endl;
    }
}