Cod sursa(job #1144260)

Utilizator felixiPuscasu Felix felixi Data 16 martie 2014 20:14:21
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.42 kb
#include <algorithm>
#include <fstream>
#include <vector>

using namespace std;

ifstream in("hashuri.in");
ofstream out("hashuri.out");

const int MOD= 666013;

vector <int> v[ MOD+1 ];

inline int key( int n ) {
    return n % MOD;
}

inline void adaos( int nr ) {
    int k= key( nr );
    int gasit= 0;
    for( int i= 0;  i<(int)v[k].size();  i++ ) {
        if( nr == v[k][i] ) gasit= 1;
    }
    if( gasit == 0 ) v[k].push_back( nr );
}

inline void DeLeTe( int nr ) {
    int k= key( nr );
    int gasit= 0;
    for( int i= 0;  i<(int)v[k].size() && gasit==0;  i++ ) {
        if( nr == v[k][i] ) {
            gasit= 1;
            swap( v[k][i] , v[k][ v[k].size()-1 ] );
            v[k].pop_back();
        }
    }
}

inline void Afis( int nr ) {
    int k= key( nr );
    int gasit= 0;
    for( int i= 0;  i<(int)v[k].size() && gasit==0;  i++ ) {
        if( nr == v[k][i] ) {
            gasit= 1;
        }
    }
    out << gasit << '\n';
}

int main()
{
    int N;
    in >> N;
    for( int i= 1;  i<=N;  i++ ) {
        int op;
        in >> op;
        if( op == 1 ) {
            int nr;
            in >> nr;
            adaos( nr );
        }
        else if( op == 2 ) {
            int nr;
            in >> nr;
            DeLeTe( nr );
        }
        else {
            int nr;
            in >> nr;
            Afis( nr );
        }
    }
    return 0;
}