Cod sursa(job #1020658)

Utilizator sziliMandici Szilard szili Data 2 noiembrie 2013 14:11:28
Problema Componente biconexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <vector>

#define MOD 666013

using namespace std;

vector<int> hashTable[MOD];

void add(int x){
    hashTable[x % MOD].push_back(x);
}

void deleteFromHash(int x){

    for (int i=0; i<hashTable[x % MOD].size(); i++){
        if (hashTable[x % MOD][i] == x){
            hashTable[x % MOD].erase(hashTable[x % MOD].begin() + i);
            break;
        }
    }
}

int exists(int x){

    int ex = 0;

    for (int i=0; i<hashTable[x % MOD].size(); i++){
         if (hashTable[x % MOD][i] == x){
            ex = 1;
            break;
         }
    }

    return ex;
}

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

    int n;
    scanf("%d", &n);

    int op, x;
    for (int i=0; i<n; i++){
        scanf("%d %d", &op, &x);

        switch(op){
        case 1:
            add(x);
            break;

        case 2:
            deleteFromHash(x);
            break;

        case 3:
            if (exists(x)){
                printf("1\n");
            } else {
                printf("0\n");
            }

            break;
        }

    }

    return 0;
}