Cod sursa(job #1937926)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 24 martie 2017 13:54:41
Problema Potrivirea sirurilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>
//strmatch cu Z-algorithm

using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
char A[1000],*p;
int n,i,j,st,dr,Z[1000];
int main()
{
    A[0]='#';p=A+1;f>>p;n=strlen(p);
    //B[0]='#';cin>>(B+1);n=strlen(B)-1;
    //functia Z
    for(i=2;i<=n;i++)
    {
        if(i<=dr&&i+Z[i-st+1]-1<dr)
        {
            Z[i]=Z[i-st+1];
            continue;
        }
        if(i<dr)
        {
            j=dr-i+1;
            st=i;
            while(A[dr+1]==A[j+1])
                dr++,j++;
            Z[i]=j;
            continue;
        }
        if(A[i]!=A[1])
            continue;
        st=dr=i;j=1;
        while(A[dr+1]==A[j+1])
            dr++,j++;
        Z[i]=j;
    }
    for(i=1;i<=n;i++)
        g<<Z[i];
    return 0;
}