Pagini recente » Cod sursa (job #401872) | Cod sursa (job #2643766) | Cod sursa (job #892433) | Cod sursa (job #1397973) | Cod sursa (job #2832389)
#include <fstream>
#include <string>
#include <unordered_set>
using namespace std;
ifstream fin("abc2.in");
ofstream fout("abc2.out");
const int sigma=3;
typedef unsigned int uint;
unordered_set <uint> us;
int main(){
string s1,s2;
fin>>s1>>s2;
uint nr=0;
int n=s2.size();
for(int i=0;i<n;i++){
nr=nr*sigma+s2[i]-'a';
}
us.insert(nr);
while(fin>>s2){
nr=0;
for(int i=0;i<n;i++){
nr=nr*sigma+s2[i]-'a';
}
us.insert(nr);
}
nr=0;
uint p=1;
for(int i=1;i<n;i++){
p*=sigma;
}
int sol=0,m=s1.size();
for(int i=0;i<m;i++){
if(i>=n){
nr=nr-(s1[i-n]-'a')*p;
}
nr=nr*sigma+s1[i]-'a';
if(i>=n-1&&us.find(nr)!=us.end()){
sol++;
}
}
fout<<sol<<"\n";
return 0;
}