Pagini recente » Cod sursa (job #236761) | Cod sursa (job #1822989) | Cod sursa (job #2900801) | Cod sursa (job #1854054) | Cod sursa (job #1928236)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
ofstream fout("x.txt");
char x[2000002];
char y[2000002];
int pi[2000002];
int main()
{int i,k,nr=0;
f>>x+1;
f>>y+1;
pi[1]=0;
k=0;
for(i=2;x[i];i++)
{
while(k>0 and x[i]!=x[k+1])
k=pi[k];
if(x[i]==x[k+1]) k++;
pi[i]=k;
}
k=0;
int n=strlen(x+1);
for(i=1;y[i];i++)
{
while(k>0 and y[i]!=x[k+1])
k=pi[k];
if(y[i]==x[k+1]) k++;
if(k==n) {nr++; if(nr<1000) fout<<i<<' ';}
}
g<<nr<<'\n';
fout.close();
ifstream fin("x.txt");
while(fin>>i)
g<<i-n<<' ';
return 0;
}