Pagini recente » Cod sursa (job #2183191) | Cod sursa (job #2116362) | Cod sursa (job #2173672) | Cod sursa (job #1877478) | Cod sursa (job #1328934)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("reguli.in");
ofstream g ("reguli.out");
const int NMAX = 500000 + 1;
int n;
long long v[NMAX];
int p[NMAX];
void citeste() {
f >> n;
long long x, y;
f >> v[0];
x = v[0];
for (int i = 1; i < n; i++) {
f >> y;
v[i] = y - x;
x = y;
}
}
void rezolva() {
p[0] = p[1] = 0;
int k = 0;
for (int i = 2; i < n; i++) {
while (k != 0 && v[k + 1] != v[i]) k = p[k];
if (v[k + 1] == v[i]) k++;
p[i] = k;
}
n--;
int nr = n - p[n];
g << nr << '\n';
for (int i = 1; i <= nr; i++) g << v[i] << '\n';
}
int main() {
citeste();
rezolva();
return 0;
}