Pagini recente » Cod sursa (job #1379715) | Cod sursa (job #2638731) | Cod sursa (job #1874907) | Cod sursa (job #3210781) | Cod sursa (job #3176627)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
vector <int> rezultat;
int pi[2000000];
int main()
{
string s,t,tot;
fin>>t>>s;
tot=t+"#"+s;
int rez=0;
for(int i=1; i<=tot.size() ;i++)
{
int j=pi[i-1];
while(j>0 && tot[i]!=tot[j])
j=pi[j-1];
if(tot[i]==tot[j])
j++;
pi[i]=j;
if(i>t.size() && j == t.size())
{
rez++;
rezultat.push_back(i);
}
}
fout<<rez<<"\n";
for(auto i:rezultat)
fout<<i- 2*t.size()<<" ";
}