Cod sursă (job #584816)

Utilizator avatar Alex_tz307 Lorintz Alexandru Alex_tz307 IP ascuns
Problemă Bart (clasele 9-10) Compilator cpp-32 | 0.60 kb
Rundă Arhiva de probleme Status evaluat
Dată 6 mar. 2021 12:43:34 Scor 100
#include <bits/stdc++.h>

using namespace std;

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

vector<int> preffix_function(const string &A) {
    vector<int> pi(A.size());
    int N = A.size() - 1;
    for(int i = 2, q = 0; i <= N; ++i) {
        while(q && A[q + 1] != A[i])
            q = pi[q];
        if(A[q + 1] == A[i])
            ++q;
        pi[i] = q;
    }
    return pi;
}

int main() {
    string s;
    fin >> s;
    s = '0' + s;
    vector<int> pi = preffix_function(s);
    int N = s.size() - 1;
    for(int i = 1; i <= N - pi[N]; ++i)
        fout << s[i];
}