Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/andariel97 | Statistici Catalina Gherasim (catalinagherasim1) | Diferente pentru utilizator/predaboss intre reviziile 21 si 22 | Cod sursa (job #2014792)
#include <cstdio>
#define MAXN 500000
FILE *fin, *fout;
int N;
long long x[MAXN + 1];
long long dif[MAXN + 1];
int pi[MAXN + 1];
int main() {
fin = fopen("reguli.in", "r");
fout = fopen("reguli.out", "w");
fscanf(fin, "%d", &N);
for (int i = 1; i <= N; i++)
fscanf(fin, "%lld", &x[i]), dif[i - 1] = x[i] - x[i - 1];
int k = 0, M = N - 1;
pi[1] = 0;
for (int i = 2; i <= M; i++) {
while (k > 0 && dif[k + 1] != dif[i])
k = pi[k];
if (dif[k + 1] == dif[i])
k++;
pi[i] = k;
}
int l = M - pi[M];
fprintf(fout, "%d\n", l);
for (int i = 1; i <= l; i++)
fprintf(fout, "%lld\n", dif[i]);
fclose(fin);
fclose(fout);
return 0;
}