Cod sursa(job #1699179)

Utilizator TopiAlexTopala Alexandru TopiAlex Data 6 mai 2016 15:26:22
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <stdio.h>
#include <vector>
#define MOD 666013
using namespace std;

typedef vector<int>::iterator Iterator;

int n;
int r;
vector<int> hashTable[MOD];

Iterator exista(int);
void adauga(int);
void sterge(int);

int main()
{
    freopen("hashuri.in", "r", stdin);
    freopen("hashuri.out", "w", stdout);

    scanf("%d", &n);

    int operatie;
    int x;

    for (int OP = 1; OP <= n; ++OP){
        scanf("%d%d", &operatie, &x);
        r = x % MOD;
        switch (operatie){
            case 1 : adauga(x); break;
            case 2 : sterge(x); break;
            case 3 : Iterator it = exista(x);
                     if (it != hashTable[r].end()) printf("1\n");
                     else printf("0\n");
                     break;
        }
    }
    return 0;
}

Iterator exista(int x){
    Iterator it;

    for (it = hashTable[r].begin(); it != hashTable[r].end(); ++it)
        if (*it == x) return it;

    return hashTable[r].end();

}

void adauga(int x){
    Iterator it = exista(x);
    if (it == hashTable[r].end()) hashTable[r].push_back(x);
}

void sterge(int x){
    Iterator it = exista(x);
    if (it != hashTable[r].end()) hashTable[r].erase(it);
}