Pagini recente » Cod sursa (job #10369) | Cod sursa (job #2228115) | Cod sursa (job #2154103) | Cod sursa (job #1033835) | Cod sursa (job #23289)
Cod sursa(job #23289)
#include <cstdio>
using namespace std;
const char iname[] = "reguli.in";
const char oname[] = "reguli.out";
#define MAX_N 500000
typedef long long i64;
i64 A[MAX_N];
int P[MAX_N];
int main(void)
{
freopen(iname, "r", stdin);
int n;
int i;
i64 lo, hi;
scanf("%d", & n);
scanf("%lld", & lo);
for (i = 1; i < n; ++ i)
scanf("%lld", & 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("%lld\n", A[i]);
return 0;
}