Pagini recente » Cod sursa (job #2653521) | Cod sursa (job #2052672) | Cod sursa (job #1154349) | Cod sursa (job #1292131) | Cod sursa (job #2958041)
#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(auto i:v)
fout<<i<<" ";
}