Cod sursa(job #2168693)

Utilizator Bodo171Bogdan Pop Bodo171 Data 14 martie 2018 11:58:45
Problema Potrivirea sirurilor Scor 14
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <fstream>
using namespace std;
const int nmax=4000005;
string a,b,s;
int z[nmax];
int rez[1005];
int n,i,j,len,r,c,ans;
int main()
{
    ifstream f("strmatch.in");
    ofstream g("strmatch.out");
    f>>a>>b;len=a.size();
    s=a+b;n=s.size();
    for(i=1;i<n;i++)
    {
        if(i>r) j=0;
        else j=max(min(z[i-c],r-i),0);
        while(i+j<n&&s[j]==s[i+j]) j++;
        j--;
        z[i]=j;
        if(i+j>r) r=i+j,c=i;
        if(i<len&&z[i]>=len-1)
        {
            ans++;
            if(ans<=1000)
                rez[ans]=i-len;
        }
    }
    g<<ans<<'\n';
    for(i=1;i<=min(ans,1000);i++)
        g<<rez[i]<<' ';
    return 0;
}