Cod sursă (job #741665)

Utilizator avatar iulia.morariu Iulia Ela Morariu iulia.morariu IP ascuns
Problemă Bart (clasele 9-10) Compilator cpp-32 | 0,72 kb
Rundă Arhiva de probleme Status evaluat
Dată 31 oct. 2023 15:07:49 Scor 90
#include <bits/stdc++.h>

using namespace std;

ifstream fin("bart.in");
ofstream fout("bart.out");

int main(){
    cin.tie(0);ios::sync_with_stdio(0);

    string s; fin >> s;
    int p[ s.size() ];
    int n = s.size();
    p[0] = 0;
    int k = 0;
    for(int i = 1; i < n; i++){
        while(k != 0 && s[k] != s[i]){
            k = p[k - 1];
        }

        if(s[k] == s[i]) k++;
        p[i] = k;
    }
/*
    cout << "p : ";
    for(int i = 0; i < n; i++) cout << p[i] << " ";
    cout << endl;*/

    int lp = n - 1;    
    if(p[n - 1] == 0) fout << s << endl;
    else{
        int lp = n - 1;
        while(p[lp] > 1) lp--;
        for(int i = 0; i < lp; i++) fout << s[i];
        fout << endl;
    }

    return 0;
}