Pagini recente » Cod sursa (job #1683998) | Cod sursa (job #898329) | Cod sursa (job #1968882) | Istoria paginii utilizator/musicxd | Cod sursa (job #2293724)
#include <fstream>
#include <iostream>
#include <cstring>
#include <unordered_set>
#include <iterator>
using namespace std;
const int p = 1000003;
int hashString(char *s)
{
unsigned long long hh = 0, pp = 1;
int i ;
for ( i = strlen(s)-1 ; i >= 0; i-- )
{
hh = hh + pp * (s[i]-'0' + 1);
pp *= 3;
}
return (int)(hh%p);
}
int main()
{
unordered_set <int> dictionar;
char cuv[23], ch;
ifstream fin("abc2.in");
while(fin.get(ch))
{
if(ch == '\n') break;
}
fin.get(cuv, 23);
int lcuv = strlen(cuv);
dictionar.insert(hashString(cuv));
fin.get();
while (fin.get(cuv, 23))
{
dictionar.insert(hashString(cuv));
fin.get();
}
// unordered_set<int> :: iterator itr;
// for (itr = dictionar.begin(); itr != dictionar.end(); itr++)
// cout << (*itr) << endl;
fin.clear();
fin.seekg(0);
int i = 0, nr = 0;
do
{
fin.get(ch);
if (ch == '\n')
break;
cuv[i++] = ch;
if (i == lcuv)
{
cuv[i] = '\0';
if(dictionar.find(hashString(cuv)) != dictionar.end())
nr++;
strcpy( cuv, cuv+1);
cuv[strlen(cuv)-1] = ch;
cuv[strlen(cuv)] = '\0';
i --;
}
}
while(1);
ofstream fout("abc2.out");
fout << nr;
fout.close();
return 0;
}