Cod sursa(job #2545044)

Utilizator ilincaspIlinca Sfrijan-Penciu ilincasp Data 12 februarie 2020 19:49:51
Problema Potrivirea sirurilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <iostream>
#include<cstring>
using namespace std;

char a[200],b[200];
int l[200]={0},p[200]={0},la,lb;

void schpat()
{
    int i,j,nr[1000],k,n;
    for(i=0;i<200;i++)
            nr[i]=-1;
    la=strlen(a);
    lb=strlen(b);
    i=0;
    j=0;
    n=0;
    k=0;
    while(i<lb)
        if(b[i]==a[j])
        {
            i++;
            j++;
            if(j==la)
            {
                nr[k++]=i-la;
                n++;
                j=l[j-1];
            }
        }
        else if(j==0)
            i++;
        else
            j=l[j-1];
        cout<<n<<'\n';
        if(n<1000)
            for(i=0;i<n;i++)
            if(nr[i]>-1)
                cout<<nr[i]<<' ';
        else
        for(i=0;i<1000;i++)
            if(nr[i]>-1)
                cout<<nr[i]<<' ';
}

void sir()
{
    int i,j;
    la=strlen(a);
    lb=strlen(b);
    i=1;
    j=0;
    while(i<la)
        if(a[i]==a[j])
        {
            j++;
            l[i]=j;
            i++;
        }
        else if(j==0)
            l[i++]=0;
        else
            j=l[j-1];
}

int main()
{
    cin.getline(a, 200);
    cin.getline(b,200);
    sir();
    schpat();


    return 0;
}