Cod sursa(job #241101)

Utilizator firewizardLucian Dobre firewizard Data 9 ianuarie 2009 14:14:59
Problema Potrivirea sirurilor Scor 4
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <stdio.h>
#include <string>
char a[256],b[256];
long v[540],vsol[540],i,j,k,l,n,m,q;
int main()
{
    freopen ("strmatch.in","r",stdin);
    freopen ("strmatch.out","w",stdout);
    scanf("%s",a+1);n=strlen(a+1);
    scanf("%s",b+1);m=strlen(b+1);
    k=0;
    for (i=2;i<=n;++i){
        while (k>1&&a[k+1]!=a[i])
              k=v[k];
        if (a[k+1]==a[i])++k;
        v[i]=k;
        }   
    k=0;
    for (i=1;i<=n;++i){
        while(k>0&&b[k+1]!=a[i])k=v[k];
        if(b[k+1]==a[i])k++;
        if(k==m)vsol[++l]=i-m+1;
        }
    printf("%ld\n",l);
    for(i=1;i<=l;++i)
    printf("%ld ",vsol[i]);
    return 0;
}