Pagini recente » Cod sursa (job #832169) | Istoria paginii runda/baraj_oni_2007/clasament | Cod sursa (job #2204936) | Cod sursa (job #528690) | Cod sursa (job #2225793)
#include <cstdio>
#include <map>
using namespace std;
char s[10000001],cc[25];
map<int,int> m;
int main()
{
FILE *fin=fopen ("abc2.in","r");
FILE *fout=fopen ("abc2.out","w");
int i,l;
long long nr,p3,sol;
char c;
fscanf (fin,"%s\n",s);
fscanf (fin,"%s\n",cc);
while (1){
nr=0;
i=0;
while (cc[i]!=0){
nr=nr*3+(cc[i]-'a');
i++;
}
l=i;
m[nr]=1; // exista cuvantul nr
c=fgetc (fin);
fscanf (fin,"%s\n",cc+1);
if (c!='a' && c!='b' && c!='c')
break;
cc[0]=c;
}
p3=1;
for (i=1;i<l;i++)
p3*=3;
nr=0;
sol=0;
for (i=0;i<l;i++){
if (!s[i])
break;
nr=nr*3+(s[i]-'a');
}
if (m[nr])
sol++;
for (i=l;s[i]!=0;i++){
nr=nr-p3*(s[i-l]-'a');
nr=nr*3+(s[i]-'a');
if (m[nr])
sol++;
}
fprintf (fout,"%lld",sol);
return 0;
}