Pagini recente » Istoria paginii utilizator/cosmincreato | Profil Simon2712 | Istoria paginii utilizator/cetateanu | Profil Simon2712 | Cod sursa (job #2014791)
#include <cstdio>
#define MAXN 500000
FILE *fin, *fout;
int N;
int x[MAXN + 1];
int 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, "%d", &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, "%d\n", dif[i]);
fclose(fin);
fclose(fout);
return 0;
}