Pagini recente » Cod sursa (job #2400154) | Cod sursa (job #1280300) | Cod sursa (job #621642) | Cod sursa (job #2417030) | Cod sursa (job #529158)
Cod sursa(job #529158)
#include<fstream>
using namespace std;
fstream f("strmatch.in", ios::in), g("strmatch.out", ios::out);
long long L[]={0, 0, 0, 1}, i, t, n, m, k, nrp, v[2002];
char P[2002], T[2002];
int main()
{
f.getline(P,100);
f.getline(T,100);
n=strlen(P);
for(i=n; i>=0; i--)
P[i]=P[i-1];
m=strlen(T);
for(i=m; i>=0; i--)
T[i]=T[i-1];
k=0;
nrp=0;
for(i=1; i<=m; i++)
{
while(k>0 && T[i]!=P[k+1])
k=L[k];
if(T[i]==P[k+1])
k++;
if(k==n)
{
nrp++;
if(nrp<=2000)
v[nrp]=i-n;
k=L[k];
}
}
g<<nrp<<endl;
if(nrp<=2000)
{
for(i=1; i<=nrp; i++)
g<<v[i]<<" ";
}
else
{
for(i=1; i<=2000; i++)
g<<v[i]<<" ";
}
}