Pagini recente » Cod sursa (job #2835303) | Cod sursa (job #225192) | Cod sursa (job #373264) | Cod sursa (job #1592923) | Cod sursa (job #18208)
Cod sursa(job #18208)
#include <stdio.h>
#define FIN "reguli.in"
#define FOUT "reguli.out"
#define NMAX 500001
#define INF 0x3f3f3f3f
long long x[NMAX], a[NMAX], sum;
int N;
int search (int k)
{
sum = 0;
for (int i = 1; i < k; ++ i)
{
a[i] = x[i] - x[i-1];
sum += a[i];
}
a[k] = x[k] - x[k-1];
sum += a[k];
long long rest = 0;
int lim = (N-1) % k;
//if (lim == 0 && k != N-1)
// lim = k;
for (int i = 1; i <= lim; ++ i)
rest += a[i];
if (x[N-1] == ((N-1) / k) * sum + rest + x[0])
return 1;
return 0;
}
int
main ()
{
freopen (FIN, "rt", stdin);
freopen (FOUT, "wt", stdout);
scanf ("%d", &N);
scanf ("%d%d", &x[0], &x[1]);
int rat = x[1] - x[0];
bool verif = true;
for (int i = 2; i < N; ++ i)
{
scanf ("%d", &x[i]);
if (x[i] != rat + x[i-1])
verif = false;
}
if (verif)
{
printf ("1\n%d\n", rat);
return 0;
}
for (int i = 2; i <= N; ++ i)
if (search (i))
{
printf ("%d\n", i);
for (int j = 1; j <= i; ++ j)
printf ("%lld\n", a[j]);
break;
}
return 0;
}