Pagini recente » Cod sursa (job #1225450) | Cod sursa (job #375242) | Cod sursa (job #909624) | Cod sursa (job #28996) | Cod sursa (job #18782)
Cod sursa(job #18782)
#include <cstdio>
#define FIN "reguli.in"
#define FOUT "reguli.out"
#define MAXN 500010
long long s[MAXN];
long n, i, j, p, u, cnt, k[MAXN], ok, mod;
int main () {
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%ld", &n);
for (i=0; i<=n-1; i++) scanf("%lld", &s[i]);
p = u = 1;
cnt = 1;
k[p] = 1;
for (i=2; i<=n-1; i++) {
ok = 0;
while ((ok==0) && (p<=u)) {
mod = i - (i / k[p]) * k[p];
if (mod == 0) { if (s[k[p]] - s[k[p]-1] == s[i] - s[i-1]) ok = 1; }
else if (s[mod] - s[mod-1] == s[i] - s[i-1]) ok = 1;
if (ok == 0) p++;
}
u++;
k[u] = i;
}
printf("%ld\n", k[p]);
for (i=1; i<=k[p]; i++) printf("%lld\n", (s[i] - s[i-1]));
return 0;
}