Pagini recente » Cod sursa (job #3162184) | Cod sursa (job #3255397) | Cod sursa (job #2946490) | Cod sursa (job #164935) | Cod sursa (job #3161674)
using namespace std;
#include<iostream>
#include<fstream>
ifstream fin("reguli.in");
ofstream fout("reguli.out");
int n;
int a[500001];
int v[500000];
int lps[500001];
int main() {
fin >> n;
for (int i = 1; i<=n; i++) {
fin >> a[i];
}
for (int i = 1; i<n; i++) {
v[i] = a[i+1] - a[i];
// cout << v[i] << " ";
}
//cout << "\n0 ";
int j = 0;
int maxim = 0, pozmax = 0;
for (int i = 2; i<n; i++) {
while (j != 0 && v[j+1] != v[i]) {
j = lps[j+1];
}
if (v[j+1] == v[i]) {
j++;
}
lps[i] = j;
// cout << lps[i] << " ";
if (j > 0 && i % (i-j) == 0) {
if (maxim < i-j) {
maxim = i-j;
pozmax = i;
}
}
}
if (maxim == 0) {
fout << n-1 << "\n";
for (int i = 1; i<n; i++) {
fout << v[i] << "\n";
}
return 0;
}
fout << maxim << "\n";
for (int i = pozmax-maxim+1; i<=pozmax; i++) {
fout << v[i] << "\n";
}
return 0;
}