Cod sursa(job #1047622)

Utilizator Aleks10FMI - Petrache Alex Aleks10 Data 4 decembrie 2013 19:21:03
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 2.66 kb
#include <iostream>
#include <fstream>
#include <unordered_set>

#define nr_zone 666013

using namespace std;

unordered_set<int> unset;

int main(){
    long n,i,op,x;
    ifstream f("hashuri.in");
    ofstream g("hashuri.out");
    f>>n;
    for(i=0;i<n;i++){
        f>>op>>x;
        if(op==1)
            unset.insert(x);
        else if(op==2)
            unset.erase(x);
        else if(op==3)
            g<<(unset.find(x)!=unset.end())<<'\n';
    }
    return 0;
}

/*
---100 puncte--- hashuri
#include <iostream>
#include <fstream>
#include <vector>

#define nr_zone 666013

using namespace std;

vector<int> hashh[nr_zone];

int cautare(vector<int> hashh[nr_zone], int val){
    int zona=val%nr_zone;
    int i;
    for(i=0;i<hashh[zona].size();i++)
        //cout<<hash[zona][i];
        if(hashh[zona][i]==val)
         return i;
    return -1;
}

void inserare(vector<int> hashh[nr_zone], int val){
    int zona=val%nr_zone;
    if(cautare(hashh, val)>-1)
        return;
    //cout<<zona;
    hashh[zona].push_back(val);
    //cout<<hash[zona][0];
}

void sterge(vector<int> hashh[nr_zone], int val){
    int poz=cautare(hashh, val);
    if(poz!=-1){
        int zona=val%nr_zone;
        hashh[zona][poz]=hashh[zona].back();
        hashh[zona].pop_back();
    }
}

int main(){
    long n,i,op,x;
    ifstream f("hashuri.in");
    ofstream g("hashuri.out");
    f>>n;
    for(i=0;i<n;i++){
        f>>op>>x;
        if(op==1)
            inserare(hashh,x);
        else if(op==2)
            sterge(hashh,x);
        else if(op==3)
            if(cautare(hashh,x)>-1)
                g<<1<<'\n';
            else g<<0<<'\n';
    }
    return 0;
}*/

/*
---70-80 puncte---
#include <iostream>
#include <fstream>
#include <set>
using namespace std;

int main(){
    set<long> a;
    long n,i,op,x;
    ifstream f("hashuri.in");
    ofstream g("hashuri.out");
    f>>n;
    for(i=0;i<n;i++){
        f>>op>>x;
        if(op==1)
            a.insert(x);
        else if(op==2)
            a.erase(x);
        else if(op==3)
            g<<(a.find(x)!=a.end())<<'\n';

    }
    return 0;
}*/


/*
---30 puncte---
#include <iostream>
#include <fstream>
using namespace std;

long long n,i,op,x,ap[200000000];
int main()
{
    ifstream f("hashuri.in");
    ofstream g("hashuri.out");
    f>>n;
    for(i=0;i<n;i++){
        f>>op>>x;
        if(op==1)
            ap[x]='1';
        else if(op==2)
            ap[x]='0';
        else if(op==3)
            if(ap[x]=='1')
                g<<'1'<<'\n';
            else g<<'0'<<'\n';
    }
    return 0;
}
---30 puncte---
*/