Cod sursă (job #676708)

Utilizator avatar andreiiorgulescu Iorgulescu Andrei andreiiorgulescu IP ascuns
Problemă Bart (clasele 9-10) Compilator cpp-32 | 0,67 kb
Rundă Arhiva de probleme Status evaluat
Dată 19 nov. 2022 20:09:17 Scor 100
#pragma GCC optimize("O1")
#pragma GCC optimize("O2")
#pragma GCC optimize("O3")
#pragma GCC optimize("O4")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>

using namespace std;

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

string a;
int pi[500005];

int main()
{
    in >> a;
    a = ' ' + a;
    int n = a.size() - 1;
    for (int i = 2; i <= n; i++)
    {
        pi[i] = pi[i - 1];
        while (pi[i] != 0 and a[pi[i] + 1] != a[i])
            pi[i] = pi[pi[i]];
        if (a[i] == a[pi[i] + 1])
            pi[i]++;
    }
    for (int i = 1; i <= n - pi[n]; i++)
        out << a[i];
    return 0;
}