Pagini recente » Cod sursa (job #1332586) | Cod sursa (job #2326031) | Cod sursa (job #2491809) | Cod sursa (job #853411) | Cod sursa (job #2908985)
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <string>
using namespace std;
string sir,cuv;
unordered_map <unsigned int,int> my_map;
ifstream fin ("abc2.in");
ofstream fout ("abc2.out");
unsigned int putere( int n )
{
unsigned int p = 1;
for ( int i = 1; i <= n; i++)
p*=3;
return p;
}
int main()
{
int i;
fin >> sir;
fin >> cuv;
unsigned int s = 0 , lg = cuv.size() , put2 = putere(lg-1);
for(i = 0; i < lg; i++)
{
s = s + ( sir[i] - 'a' ) * put2;
put2 /= 3;
}
my_map[s] = 1;
unsigned int put = putere(lg-1);
for( i = lg; i < sir.size() ; i++)
{
s = ( s - (sir [i-lg] - 'a') * put ) *3 + ( sir[i] - 'a' );
my_map[s]++;
}
s = 0;
put2 = putere(lg-1);
for( i = 0; i< lg; i++)
{
s = s + ( cuv[i] - 'a' ) * put2;
put2 /= 3;
}
unsigned int rezultat = 0;
if(my_map.find(s)!=my_map.end())
{
rezultat += my_map[s];
my_map.erase(s);
}
while( fin >> cuv)
{
s = 0;
put2 = putere(lg-1);
for( i = 0; i< lg; i++)
{
s = s + ( cuv[i] - 'a' ) * put2;
put2 /= 3;
}
if(my_map.find(s)!=my_map.end())
{
rezultat += my_map[s];
my_map.erase(s);
}
}
fout<<rezultat;
return 0;
}