Cod sursa(job #1767477)

Utilizator GoogalAbabei Daniel Googal Data 29 septembrie 2016 11:21:46
Problema Potrivirea sirurilor Scor 18
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>
#include <cstring>

using namespace std;

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

char a[2000001],b[2000001];
int i,j,k,l[2000001],z,v[1001],t;

void KMP()
{
    k=-1;
    for(t=0; t<strlen(b); t++)
    {
        while(k>0 && a[k+1]!=b[t])
            k=l[k];
        if(a[k+1]==b[t])
            k++;
        if(k==strlen(a)-1)
        {
            if(z<1000)
                v[++z]=t-k;
            k=l[k];
        }
    }
}

int main()
{
    fin>>a>>b;
    KMP();
    fout<<z<<'\n';
    for(i=1; i<=z; i++)
        fout<<v[i]<<' ';

    return 0;
}