Cod sursa(job #3324190)

Utilizator trifangrobertRobert Trifan trifangrobert Data 21 noiembrie 2025 16:43:13
Problema Numarare Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

int main() {
    ifstream cin("numarare.in");
    ofstream cout("numarare.out");
    int N;
    cin >> N;
    vector <int> s(N);
    for (auto& x : s) {
        cin >> x;
    }
    int M = N - 1;
    vector <int> diff(M);
    for (int i = 0;i + 1 < N;++i) {
        diff[i] = s[i] - s[i + 1];
    }
    vector <int> z(M);
    int left = 0, right = 1;
    for (int i = 1;i < M;++i) {
        z[i] = min(right - i, z[left + (right - i)]);
        while (i + z[i] < M && i - z[i] >= 0 && diff[i - z[i]] == diff[i + z[i]]) {
            z[i] += 1;
        }
        if (i + z[i] > right) {
            left = i - z[i];
            right = i + z[i];
        }
    }
    int answer = 0;
    for (int i = 0;i < M;++i) {
        answer = max(answer, 2 * z[i]);
    }
    cout << answer << "\n";
    return 0;
}