Cod sursa(job #2982258)

Utilizator Giurgea3000Giurgea Giurgea3000 Data 19 februarie 2023 19:41:11
Problema Potrivirea sirurilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 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;
    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<<" ";
        }
    }
    /*
    for(int i=1;i<=n;i++)
    {
        cout<<p[i]<<" ";
    }
    */
    return 0;
}