Cod sursă (job #530271)

Utilizator avatar mateih Hristodorescu Matei mateih IP ascuns
Problemă Bart (clasele 9-10) Compilator cpp | 0,58 kb
Rundă Arhiva de probleme Status evaluat
Dată 24 feb. 2020 11:15:18 Scor 100
#include<fstream>
#include<cstring>

using namespace std;

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

int pi[500010];
char s[500010];

void fpi(int n){
    int now=0;
    for(int i=2;i<=n;i++){
        while(s[now+1]!=s[i]&&now>0)
            now=pi[now];
        if(s[now+1]==s[i])
            now++;
        pi[i]=now;
    }
}

int main () {
int n;
cin.getline(s+1,500010);
s[0]='#';
n=strlen(s+1);

fpi(n);

int panala=n-pi[n];///merge si pe caz particular cand ultima parte nu e incompleta

for(int i=1;i<=panala;i++)
    cout<<s[i];

return 0;
}