Pagini recente » Cod sursa (job #1448259) | Cod sursa (job #495418) | Cod sursa (job #1250466) | Cod sursa (job #200305) | Cod sursa (job #283528)
Cod sursa(job #283528)
#include <fstream.h>
#include <iostream.h>
#include <string.h>
int main()
{
char s1[200001],s2[200001];
int v[200000];
int i,k,m1,m2,p,l,mx=1,w=0;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
f>>s2;
f>>s1;
m1=strlen(s1);
m2=strlen(s2);
for(i=1;i<=m2;i++)
{
k=1;
while((k+i<=m2)&&(s2[k-1]==s2[k+i-1]))
k++;
if((k+i-1==m2)&&(s2[k-2]==s2[k+i-2]))
goto sl;
if(mx<k)
mx=k;
}
k=mx;
sl:;
p=0;
while(p<=m1-m2)
{
l=1;
while((l<=m2)&&(s1[p+l-1]==s2[l-1]))
l++;
if((s1[p+m2-1]==s2[m2-1])&&(l-1==m2))
v[++w]=p;
if(l-1<k)
p+=l;
else
p+=k;
}
g<<w<<endl;
for(i=1;i<=w;i++)
g<<v[i]<<' ';
g.close();
return(0);
}