Cod sursa(job #549816)

Utilizator KosmynC64Munteanu Cosmin KosmynC64 Data 8 martie 2011 23:00:48
Problema Hashuri Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#define hash_size 1234
#include<fstream>
#include<vector>
#include<list>
#include<cmath>
using namespace std;
vector<list<int> > table;
int h(int val){return (int)(sqrt(val)+val/2)%hash_size;}
void add(int val){
    int pos=h(val),found=0;
    for(list<int>::iterator i=table[pos].begin();i!=table[pos].end();i++){
        if((*i)==val){i=table[pos].end();found=1;}}
    if(found==0)table[pos].push_back(val);}
void del(int val){
    int pos=h(val);
    list<int>::iterator j;
    for(list<int>::iterator i=table[pos].begin();i!=table[pos].end();i++){
        if((*i)==val){table[pos].erase(i);i=table[pos].end();}}}
int src(int val){
    int pos=h(val);
    for(list<int>::iterator i=table[pos].begin();i!=table[pos].end();i++){
        if((*i)==val)return 1;}
    return 0;}
int main(){
    int n,d1,d2;
    table.resize(hash_size);
    ifstream f("hashuri.in");
    ofstream g("hashuri.out");
    f>>n;
    for(int i=0;i<n;i++){
        f>>d1>>d2;
        if(d1==1)add(d2);
        if(d1==2)del(d2);
        if(d1==3)g<<src(d2)<<'\n';}
    f.close();g.close();
return 0;}