Pagini recente » Cod sursa (job #1486873) | Cod sursa (job #543203) | Cod sursa (job #2372524) | Cod sursa (job #2890685) | Cod sursa (job #1301827)
#include <fstream>
#include <cstring>
using namespace std;
ifstream x ("strmatch.in");
ofstream y ("strmatch.out");
int size[20];
int v[1000000];
char pattern[2000000];
char text[2000000];
int main()
{
int i,j;
int n,m;
x>>pattern;
x>>text;
n=strlen(pattern);
for(i=1;i<n;i++)
if(size[i-1] && pattern[i]==pattern[size[i-1]])
size[i]=size[i-1]+1;
else
if(pattern[i]==pattern[0])
size[i]=1;
/*
for(i=0;i<n;i++)
y<<size[i]<<' ';
y<<'\n';
*/
m=strlen(text);
bool flag;
int k=0;
for(i=0;i<m-n;i++)
{
flag=true;
for(j=0;j<n;j++)
if(text[i+j]!=pattern[j])
{
flag=false;
i+=size[j-1];
break;
}
if(flag==true)
{
k++;
v[k]=i;
}
}
y<<k<<'\n';
for(i=1;i<=k;i++)
y<<v[i]<<' ';
y<<'\n';
return 0;
}