Pagini recente » Cod sursa (job #1055495) | Cod sursa (job #1493440) | Cod sursa (job #653745) | Cod sursa (job #1449575) | Cod sursa (job #2084091)
#include <iostream>
#include <bits/stdc++.h>
#define pb push_back
using namespace std;
ifstream in("strmatch.in");
ofstream out("strmatch.out");
string a,b;
long long nr,act,p[2000005],n,m;
vector<int> sol;
int main()
{
in>>a>>b;
n=a.size();
m=b.size();
if(n>m)
{
out<<0;
return 0;
}
p[0]=1;
act=0;
nr=0;
for(int i=1;i<=n+2;++i)p[i]=p[i-1]*71;
for(int i=0;i<n;++i)nr=nr+(a[i]-'A'+1)*p[i];
for(int i=0;i<n;++i)act=act+(b[i]-'A'+1)*p[i];
if(act==nr)sol.pb(0);
for(int i=n;i<m;++i)
{
if(i<m)act=(act-(b[i-n]-'A'+1))/71+(b[i]-'A'+1)*p[n-1];
if(act==nr)sol.pb(i-n);
}
out<<sol.size()<<'\n';
while(sol.size()>1000)sol.pop_back();
for(auto i:sol)out<<i+1<<" ";
return 0;
}