Mai intai trebuie sa te autentifici.
Cod sursa(job #743067)
Utilizator | Data | 3 mai 2012 00:18:40 | |
---|---|---|---|
Problema | Reguli | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.69 kb |
//Reguli - infoarena - Preoni 2007 Runda 2
#include <stdio.h>
#define INPUT "reguli.in"
#define OUTPUT "reguli.out"
#define NMAX 500011
long long A[NMAX], T[NMAX], N;
void prefix()
{
int i, k = 0;
T[1] = 0;
for(i = 2; i <= N; ++i)
{
while((k>0) && A[i] != A[k+1])
k = T[k];
if(A[i] == A[k+1]) ++k;
T[i] = k;
}
}
int main()
{
freopen(INPUT, "r", stdin);
freopen(OUTPUT, "w", stdout);
scanf("%d", &N);
long long x, y, i;
scanf("%lld", &x);
for(i = 2; i <= N; ++i)
{
scanf("%lld", &y);
A[i-1] = y-x;
x = y;
}
--N;
prefix();
int l = N - T[N];
printf("%d\n", l);
for(i = 1; i <= l; ++i)
printf("%lld\n", A[i]);
return 0;
}