Pagini recente » Cod sursa (job #3242149) | Cod sursa (job #328420) | Cod sursa (job #328608) | Cod sursa (job #514) | Cod sursa (job #1074806)
#include <cstdio>
#include <vector>
#define _iModulo 666013
using namespace std;
class THash
{
public:
vector <long> m_vHash[_iModulo];
THash();
void Add(int iElement);
void Delete(int iElement);
long Search(int iElement);
private:
protected:
};
//-------------------------------------------------------
long THash::Search(int iElement)
{
long k=iElement%_iModulo;
for (long i=0;i<m_vHash[k].size();i++)
{
if (m_vHash[k][i] == iElement)
return 1;
}
return 0;
return NULL;
}
//-------------------------------------------------------
THash::THash()
{
}
//-------------------------------------------------------
void THash::Add(int iElement)
{
long k=iElement%_iModulo;
for (long i=0; i<m_vHash[k].size(); i++)
if (m_vHash[k][i] == iElement) return ;
m_vHash[k].push_back(iElement);
}
//-------------------------------------------------------
void THash::Delete(int iElement)
{
long k= iElement%_iModulo;
long lLast,lFirst,lSecond;
int iOk=0;
for ( long i=0; i<m_vHash[k].size();i++)
if (m_vHash[k][i] == iElement)
{
iOk=1;
lLast=i;
}
if (iOk==1)
{
lFirst= m_vHash[k].size()-1;
lSecond= m_vHash[k][lFirst];
m_vHash[k][lFirst]=m_vHash[k][lLast];
m_vHash[k][lLast]=lSecond;
m_vHash[k].pop_back();
}
}
//-------------------------------------------------------
//-------------------------------------------------------
void ReadData()
{
FILE * fIn = fopen("hashuri.in","r");
FILE * fOut = fopen("hashuri.out","w");
THash * objHash;
objHash = new THash();
int iN;
fscanf(fIn,"%d",&iN);
for (int i=0; i<iN; i++)
{
int iCase,iNumber;
fscanf(fIn,"%d",&iCase);
fscanf(fIn,"%d",&iNumber);
switch(iCase)
{
case 1:
{
objHash->Add(iNumber);
break;
}
case 2:
{
objHash->Delete(iNumber);
break;
}
case 3:
{
fprintf(fOut,"%d\n",objHash->Search(iNumber));
break;
}
}
}
fclose(fIn);
fclose(fOut);
}
//-------------------------------------------------------
int main()
{
ReadData();
return 0;
}