Pagini recente » Cod sursa (job #746700) | Cod sursa (job #1900722) | Cod sursa (job #2945829) | Cod sursa (job #54907) | Cod sursa (job #2775393)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
const int modulo = 666013;
const int base = 11;
int n;
vector <int> v[666013];
int index;
int Hash(int num)
{
int myHash = 0;
int currentMultiplier = 1;
while (num > 0)
{
myHash += currentMultiplier * (num % 10);
myHash %= modulo;
num /= 10;
currentMultiplier *= base;
}
return myHash;
}
vector<int>::iterator FindValue(int num)
{
int myHash = Hash(num);
return find(v[myHash].begin(), v[myHash].end(), num);
}
void InsertValue(int num)
{
int myHash = Hash(num);
vector<int>::iterator myIterator = FindValue(num);
if (myIterator != v[myHash].end() && !v[myHash].empty())
return;
v[myHash].push_back(num);
}
void DeleteValue(int num)
{
int myHash = Hash(num);
vector<int>::iterator myIterator = FindValue(num);
if (myIterator != v[myHash].end() && !v[myHash].empty())
v[myHash].erase(myIterator);
}
int main()
{
fin >> n;
for (int i = 0; i < n; i++)
{
int type, num;
fin >> type >> num;
switch (type)
{
case 1:
InsertValue(num);
break;
case 2:
DeleteValue(num);
break;
case 3:
int myHash = Hash(num);
fout << (FindValue(num) != v[myHash].end()) << '\n';
break;
}
}
}