Pagini recente » Cod sursa (job #2314100) | Sandbox (cutiuţa cu năsip) | Clasament bulangandit6 | Cod sursa (job #2676000) | Cod sursa (job #1562477)
#include <iostream>
#include <cstdio>
#define MAXN 500050
using namespace std;
long long a[MAXN];
int n, pi[MAXN];
void citire()
{
long long prev, x;
scanf("%d\n", &n);
scanf("%lld", &prev);
n--;
for (int i = 1; i <= n; i++) {
scanf("%lld", &x);
a[i] = x-prev;
prev = x;
}
}
void solution(int ind)
{
printf("%d\n", ind);
for (int i = 1; i <= ind; i++)
printf("%lld\n", a[i]);
}
void solve()
{
int k = 0;
pi[1] = 0;
for (int i = 2; i <= n; i++) {
while (k && a[i] != a[k+1])
k = pi[k];
if (a[i] == a[k+1])
k++;
pi[i] = k;
}
for (int i = n; i; --i)
if (2*pi[i]>=i && pi[i]%(i-pi[i]) == 0) {
if (pi[n]-pi[i] == n-i) {
solution(i-pi[i]);
return;
}
}
solution(n);
}
int main()
{
freopen("reguli.in", "r", stdin);
freopen("reguli.out", "w", stdout);
citire();
solve();
return 0;
}