Cod sursa(job #1974120)

Utilizator cazonirobertCazoni robert cazonirobert Data 26 aprilie 2017 21:17:36
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.59 kb
#include <iostream>
#include <fstream>
#include <cstring>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <vector>
#include <stack>
#include <list> 
#include <algorithm>
#include <limits.h>
#include <queue>
#include <utility>
#include <unordered_set>
using namespace std;

struct hashes{
    int n = 1071;
    vector<int> arr[1072];
};

hashes createHashes(){
    hashes hs;
    return hs;
}


vector<int>::iterator searchHash(hashes & hs, int x){
    int mod = x % hs.n;

    for(auto it = hs.arr[mod].begin(); it != hs.arr[mod].end(); it++){
        if(*it == x){
            return it;
        }
    }
    return hs.arr[mod].end();
}

void insertHash(hashes & hs, int x){
    int mod = x % hs.n;
   
    if(searchHash(hs, x) == hs.arr[mod].end()){
        hs.arr[mod].push_back(x);
    }
    
}

void removeHash(hashes &hs, int x){
    int mod = x % hs.n;
    vector<int>::iterator it = searchHash(hs, x);
    if(it != hs.arr[mod].end()){
        hs.arr[mod].erase(it);
    }

}
/////
    ifstream f("hashuri.in");
    ofstream g("hashuri.out");
////
int main(){ 
	hashes hs =  createHashes();
    int n;
    f >> n;
    
    int opt = -1;
    int x = -1;

    for(int i = 0; i < n; i++){
        f >> opt;
        f >> x;

        switch(opt){
            case 1:
                insertHash(hs, x);
                break;
            case 2:
                removeHash(hs, x);
                break;
            case 3:
                int mod = x % hs.n;
                vector<int>::iterator it = searchHash(hs, x); 
                cout << (it != hs.arr[mod].end()) << endl;
        }
    }
    return 0;
}