Cod sursa(job #251325)

Utilizator StigmaSimina Pitur Stigma Data 2 februarie 2009 12:34:22
Problema Potrivirea sirurilor Scor 6
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream.h>
#include <fstream.h>
#include <string.h>

ifstream fin("strmatch.in");
ofstream fout("strmatch.out");

char a[2000],b[2000];
long poz[1005];
int s,sb[2000],n,m,nr;


int verif(int i)
{int j;
 for (j=n-1;j>=0;j--, i--)
  if (a[j]!=b[i]) return 0;
return 1;
}


int main()
{int i;
 fin.get(a,100,'\n');
 fin>>b;

 n=strlen(a);
 m=strlen(b);

 s=(int)a[0];
 sb[0]=(int)b[0];


for (i=1;i<n;i++)
 {s+=(int)a[i];
  sb[i]=(int)b[i]+sb[i-1];
  }


for (i=n;i<m;i++)
sb[i]=sb[i-1]+(int)b[i]-(int)b[i-n];


for (i=n;i<m;i++)
 if (sb[i]==s)
  if (verif(i))
   {nr++;
    if (nr<=1000)
     poz[nr]=i;
   }

fout<<nr<<'\n';

for (i=1;i<=1000 && i<=nr;i++)
fout<<poz[i]-n+1<<" ";
fout.close();
return 0;
}