Cod sursa(job #2746361)

Utilizator pizzandreeaCiurescu Andreea pizzandreea Data 27 aprilie 2021 18:54:47
Problema Hashuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.57 kb
#include <iostream>
#include <fstream> 
#include <vector>

using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");

const int prim = 666013;

vector <int> v[prim];

// adaugare
void op1(int nr){

    int bucket;
    // adaugam numarul (nr) intr un bucket in functie de restul impartirii lui la nr prim
    bucket = nr % prim;

    v[bucket].push_back(nr);
}

// stergere
void op2( int nr){
    
    int bucket = nr % prim;

    // parcurgem bucket-ul in care se afla nr

    vector <int>::iterator it;

    for(it = v[bucket].begin(); it != v[bucket].end(); it++){

        if( *it == nr){
            //daca gasim nr in bucket
            //ne oprim din cautare
            break;
        }       
    }

    if( it != v[bucket].end()){
        v[bucket].erase(it);
    }
}


// returnare
void op3(int nr){
    
    int bucket = nr % prim;

    vector <int> ::iterator it;

    for(it = v[bucket].begin(); it != v[bucket].end(); it++){
        if( *it == nr) {
            // daca gasim nr in bucket ne oprim
            break;
        }
    }

    if( it != v[bucket].end()) // daca apare in bucket
        fout << 1 << "\n";
    else
        fout << 0 << "\n";
}

int main(){

    int N; // operatii

    int op, nr;
    
    fin>>N;

    for(int i = 0; i < N; i++){

        fin >> op >> nr;
        // fout << op << " " << nr << "\n";

        if( op == 1) op1(nr);
        else
            if( op == 2) op2(nr);
            else
                if(op == 3) op3(nr);


    }

    return 0;
}