Cod sursa(job #3189766)
Utilizator | Mihai Octavian Mihai_Oct | Data | 6 ianuarie 2024 14:46:18 |
---|---|---|---|
Problema | Reguli | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.59 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("reguli.in");
ofstream fout("reguli.out");
int n, i, j, p[500002], r;
long long v[500002], u, x;
int main() {
fin >> n;
fin >> u;
for(i = 2; i <= n; i++) {
fin >> x;
v[i - 1] = (long long)(x - u);
u = x;
}
for(i = 2; i < n; i++) {
while(j > 0 && v[i] != v[j + 1]) j = p[j - 1];
if(v[i] == v[j + 1]) j++;
p[i] = j;
}
fout << n - 1 - p[n - 1] << "\n";
for(i = 1; i <= n - 1 - p[n - 1]; i++) fout << v[i] << "\n";
return 0;
}