Pagini recente » Cod sursa (job #2425549) | Cod sursa (job #2895838) | Cod sursa (job #1565660) | Cod sursa (job #266963) | Cod sursa (job #2434448)
#include <iostream>
#include <fstream>
#define NMAX 4000005
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
string s,t,sir="";
int n,m,pi[NMAX],i,j,nr;
int main()
{
f>>s>>t;
n=s.size();
m=t.size();
sir=s+'#'+t;
//cout<<sir;
for(i=1;i<sir.size();i++)
{
j=pi[i-1];
while(j>0 && sir[i]!=sir[j])
{
j=pi[j-1];
}
if(sir[i]==sir[j])
{
j++;
}
pi[i]=j;
}
for(i=n+1;i<sir.size();i++)
{
if(pi[i]==n)
{
nr++;
}
}
g<<nr<<"\n";
nr=min(nr,1000);
for(i=n+1;i<sir.size() && nr>0;i++)
{
if(pi[i]==n)
{
g<<i-2*n<<" ";
nr--;
}
}
return 0;
}