Cod sursa(job #2343645)

Utilizator alexandrumarin11Marin Alexandru alexandrumarin11 Data 14 februarie 2019 10:17:30
Problema Potrivirea sirurilor Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
int n,m,l,p[200010],v[2000],nr,i;
char s[200010],t[200010];
int main()
{
    f>>s+1;
    f>>t+1;
    n=strlen(s+1);
    m=strlen(t+1);
    l=0;
    p[1]=0;
    for(i=2;i<=n;i++)
    {while(l!=0&&s[i]!=s[l+1])
        l=p[l];
    if(s[i]==s[l+1])
        l++;
    p[i]=l;
    }
    l=0;
    for(i=1;i<=m;i++)
    {while(l!=0&&t[i]!=s[l+1])
        l=p[l];
    if(t[i]==s[l+1])
        l++;
    if(l==n)
    {nr++;
    if(nr<=1000)
     v[nr]=i-n;
    l=p[l];
    }
    }
    g<<nr<<endl;
    if(nr>1000)
    nr=1000;
    for(i=1;i<=nr;i++)
        g<<v[i]<<" ";
    return 0;
}