Cod sursa(job #1723281)

Utilizator BlackNestaAndrei Manaila BlackNesta Data 30 iunie 2016 11:44:55
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <bits/stdc++.h>
#define P 1000003
#define Q 123457
#define R 200003

using namespace std;

vector<int> h[P];

void Adauga(int x)
{
    int r, i;
    r = x % P;
    for (i = 0; i < h[r].size(); i++)
        if (h[r][i] == x) return;
    /// x nu este in hash, deci il pun
    h[r].push_back(x);
}

void Sterge(int x)
{
    int r, i, k;
    r = x % P;
    k = h[r].size();
    for (i = 0; i < k; i++)
        if (h[r][i] == x)
        {
            h[r][i] = h[r][k-1];
            h[r].pop_back();
            return;
        }
}

int Cauta(int x)
{
    int r, i;
    r = x % P;
    for (i = 0; i < h[r].size(); i++)
        if (h[r][i] == x) return 1;
    return 0;
}

int main()
{
    ifstream f("hashuri.in");
    ofstream g("hashuri.out");
    int n, op, i, x;
    f >> n;
    for(i = 1; i <= n; i++)
    {
        f >> op >> x;
        if(op == 1) Adauga(x);
        else if(op == 2) Sterge(x);
        else g << Cauta(x) << "\n";
    }
    f.close();g.close();
    return 0;
}