Pagini recente » Cod sursa (job #1786783) | Cod sursa (job #1880056) | Cod sursa (job #1335263) | Cod sursa (job #982876) | Cod sursa (job #255964)
Cod sursa(job #255964)
#include<fstream>
#include<string>
using namespace std;
#define xxx 2000001
ifstream fin("grader_test50.in");
ofstream fout("strmatch.out");
char a[xxx],b[xxx],c,q,w;
int lunga,lungb,n,poz[1001],vals,valc,li;
int verif(int k)
{
int i;
for(i=0;i<lunga;i++)
if(a[i]!=b[i+k])
return 0;
return 1;
}
int main()
{
fin.get(a,xxx);fin.get();
fin.get(b,xxx);
lunga=strlen(a);
lungb=strlen(b);
int i;
if(lunga==lungb)
{
if(verif(0))
fout<<"1\n0\n";
else
fout<<"0\n";
}
if(lunga>lungb)
fout<<"0\n";
if(lunga<lungb)
{
for(i=0;i<lunga;i++)
{
c=a[i];
valc+=c;
c=b[i];
vals+=c;
}
if(valc==vals)
if(verif(0))
n++,poz[n]=0;
for(li=0,i=lunga;i<lungb;li++,i++)
{
q=b[li];
w=b[i];
if(q==w)
{ n++,(n>1000 ? :poz[n]=li+1);}
else
{
vals=vals-q+w;
if(vals==valc)
if(verif(li+1))
n++,(n>1000 ? :poz[n]=li+1);
}
}
fout<<n<<'\n';
if(n>1000)
n=1000;
for(i=1;i<=n;i++)
fout<<poz[i]<<' ';
fout<<'\n';
}
fout.close();
return 0;
}