Pagini recente » Cod sursa (job #2905199) | Cod sursa (job #1334478) | sal | Borderou de evaluare (job #565560) | Cod sursa (job #2831903)
#include <fstream>
#include <string>
#include <unordered_map>
using namespace std;
ifstream fin("abc2.in");
ofstream fout("abc2.out");
const int sigma=3;
typedef unsigned int uint;
unordered_map <uint, bool> um;
int main(){
string s1,s2;
fin>>s1;
fin>>s2;
uint nr=0;
int n=s2.size();
for(int i=0;i<n;i++){
nr=nr*sigma+s2[i]-'a';
}
um[nr]=1;
while(fin>>s2){
nr=0;
for(int i=0;i<n;i++){
nr=nr*sigma+s2[i]-'a';
}
um[nr]=1;
}
nr=0;
uint p=1;
for(int i=1;i<n;i++){
p*=sigma;
}
int sol=0;
for(int i=0;i<int(s1.size());i++){
if(i>=n){
nr=nr-(s1[i-n]-'a')*p;
}
nr=nr*sigma+s1[i]-'a';
if(um[nr]>0){
sol++;
}
}
fout<<sol<<"\n";
return 0;
}