Cod sursa(job #18957)
| Utilizator | Data | 18 februarie 2007 15:20:29 | |
|---|---|---|---|
| Problema | Reguli | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.47 kb |
#include <stdio.h>
#define FOR(i,s,d) for(i=(s);i<(d);++i)
#define nmax 1<<19
int n,A[nmax],par[nmax];
int main()
{
freopen("reguli.in","r",stdin);
freopen("reguli.out","w",stdout);
int i,j,a,b;
scanf("%d",&n);
scanf("%d",&a);
FOR(i,1,n)
{
scanf("%d",&b);
A[i]=b-a;
a=b;
}
j=par[1]=0;
FOR(i,2,n)
{
for(;j&&A[j+1]!=A[i];j=par[j]);
par[i]=(j+=A[j+1]==A[i]);
}
printf("%d\n",n-1-par[n-1]);
FOR(i,1,n-par[n-1])
printf("%d\n",A[i]);
return 0;
}
