Pagini recente » Cod sursa (job #1500919) | Cod sursa (job #3154128) | Cod sursa (job #1834098) | Cod sursa (job #1685128) | Cod sursa (job #2617702)
#include <iostream>
#include <list>
#include <fstream>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
class Hash
{
int nr;
list<long long>* tabel;
public:
Hash(int);
void Insert(long long );
void Delete(long long );
int afis(long long);
list<long long>::iterator Find(long long);
int hashFuction(long long x)
{
return x % nr;
}
};
Hash::Hash(int x)
{
nr = x;
tabel = new list<long long>[nr];
}
void Hash::Insert(long long x)
{
long long i = hashFuction(x);
if(Find(x)==tabel[i].end())
tabel[i].push_back(x);
}
void Hash::Delete(long long x)
{
long long i = hashFuction(x);
list <long long>::iterator j= Find(x);
if(j!=tabel[i].end())
tabel[i].erase(j);
}
list<long long>::iterator Hash::Find(long long x)
{
long long i = hashFuction(x);
list <long long>::iterator j;
for (j = tabel[i].begin(); j != tabel[i].end(); i++)
if (*j == x)
return j;
return tabel[i].end();
}
int Hash::afis(long long x)
{
long long i = hashFuction(x);
if (Find(x) == tabel[i].end())
return 0;
return 1;
}
int main() {
int N;
long long x,y;
fin >> N;
Hash ob(666013);
while (N)
{
fin >> x;
if (x == 1)
{
fin >> y;
ob.Insert(y);
}
if (x == 2)
{
fin >> y;
ob.Delete(y);
}
if (x == 3)
{
fin >> y;
fout << ob.afis(y) << "\n";
}
N--;
}
return 0;
}