Pagini recente » Cod sursa (job #510853) | Cod sursa (job #3195316)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
string a,b;
long long n,m,c,coda,codb,v[2000000];
void prelCod()
{
for(int i=0;i<n;++i)
coda+=a[i]-'A'+1,codb+=b[i]-'A'+1;
}
bool verif(int i)
{
int p=0;
while(p<n)
{
if(a[p]!=b[i])
return 0;
++p;
++i;
}
return 1;
}
int main()
{
fin>>a>>b;
n=a.length();
m=b.length();
if(m<n)
{
fout<<0;
}
else
{
prelCod();
for(int i=0;i<=m-n;++i)
{
if(coda==codb && verif(i))
{
++c;
if(c<=1000)
v[c]=i;
}
codb=codb-(b[i]-'A'+1)+(b[i+n]-'A'+1);
}
fout<<c<<'\n';
for(int i=1;i<=c && i<=1000;++i)
fout<<v[i]<<' ';
}
return 0;
}