Cod sursa(job #2982264)

Utilizator Giurgea3000Giurgea Giurgea3000 Data 19 februarie 2023 19:44:48
Problema Potrivirea sirurilor Scor 14
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream cin("strmatch.in");
ofstream cout ("strmatch.out");

int p[4000002],j=0;

//int p[100],j;

int main()
{
    char c[4000002];
    cin.get(c+1,4000002);
    int n=strlen(c+1),cn=n,ver=0;
    c[n+1]='#';
    n++;
    while(cin>>c[n])
    {
        n++;
    }
    n--;
    //// */
/*
    for(int i=1;i<=n;i++)
    {
        cout<<c[i];
    }
    */
    for(int i=2;i<=n;i++)
    {
        p[i]=p[i-1];
        while(c[i]!=c[p[i]+1] && p[p[i]]!=0)
        {
            p[i]=p[p[i]];
        }
        if(c[p[i]+1]==c[i])
        {
            p[i]++;
        }
        else
        {
            p[i]=0;
        }
        if(p[i]==cn)
        {
            cout<<i-2*cn<<" ";
            ver=1;
        }
    }
    /*
    for(int i=1;i<=n;i++)
    {
        cout<<p[i]<<" ";
    }
    */
    if(ver==0)
    {
        cout<<0;
    }
    return 0;
}