Pagini recente » Cod sursa (job #270375) | Cod sursa (job #873086) | Cod sursa (job #2651684) | Cod sursa (job #2919093) | Cod sursa (job #23287)
Cod sursa(job #23287)
#include <cstdio>
using namespace std;
const char iname[] = "reguli.in";
const char oname[] = "reguli.out";
#define MAX_N 500000
int A[MAX_N];
int P[MAX_N];
int main(void)
{
freopen(iname, "r", stdin);
int n;
int i;
int lo, hi;
scanf("%d", & n);
scanf("%d", & lo);
for (i = 1; i < n; ++ i)
scanf("%d", & hi), A[i] = hi - lo, lo = hi;
int k;
P[1] = k = 0;
for (i = 2; i < n; ++ i) {
while (k > 0 && A[k + 1] != A[i])
k = P[k];
if (A[k + 1] == A[i])
k ++;
P[i] = k;
}
freopen(oname, "w", stdout);
int res = n - 1 - P[n - 1];
printf("%d\n", res);
for (i = 1; i <= res; ++ i)
printf("%d\n", A[i]);
return 0;
}