Pagini recente » Cod sursa (job #1025724) | Cod sursa (job #2354217) | Cod sursa (job #2416646) | Cod sursa (job #2056454) | Cod sursa (job #1257920)
#include <bits/stdc++.h>
using namespace std;
const int Nmax = 1e7 + 1;
const int Pmax = 20 + 1;
unordered_set <unsigned> Set;
char s[Nmax], sir[Pmax];
int T, P;
int main()
{
ifstream in("abc2.in");
ofstream out("abc2.out");
ios_base::sync_with_stdio( false );
in >> ( s + 1 );
T = strlen( s + 1 );
unsigned base = 1;
while ( in >> ( sir + 1 ) )
{
if ( !P )
P = strlen( sir + 1 );
unsigned cod = 0;
for ( int i = 1; i <= P; ++i )
cod = cod * 3U + ( sir[i] - 'a' );
Set.insert( cod );
}
for ( int i = 1; i < P; ++i )
base *= 3U;
int sol = 0;
unsigned cod = 0;
for ( int i = 1; i <= T; ++i )
{
if ( i > P )
cod -= 1U * base * ( s[i - P] - 'a' );
cod = cod * 3U + ( s[i] - 'a' );
if ( i >= P )
sol += ( Set.find( cod ) != Set.end() );
}
out << sol << "\n";
return 0;
}