Pagini recente » Cod sursa (job #1613355) | Cod sursa (job #2955924) | Cod sursa (job #1021862) | Cod sursa (job #2344855) | Cod sursa (job #2958042)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;
ifstream fin ("strmatch.in");
ofstream fout ("strmatch.out");
const int NMAX=2e6+5;
int prefix[2*NMAX];
vector<int>v;
string s;
string b;
int main()
{
int n,i,j,kon=0,m;
fin>>s;
s=s+'#';
m=s.length()-1;
fin>>b;
s=s+b;
n=s.length();
for(i=1;i<n;i++)
{
while(kon>0 && s[kon]!=s[i])
kon=prefix[kon-1];
if(s[kon]==s[i])
kon++;
prefix[i]=kon;
if(kon==m)
v.push_back(i-m-m);
}
fout<<v.size()<<"\n";
for(i=0;i<min(1000,(int)v.size());i++)
fout<<v[i]<<" ";
}