Cod sursa(job #18661)
| Utilizator | Data | 18 februarie 2007 12:55:46 | |
|---|---|---|---|
| Problema | Reguli | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | preONI 2007, Runda 2, Clasele 11-12 | Marime | 0.52 kb |
#include<stdio.h>
#define maxN 500000
int main ()
{ long int i,N,x[maxN],d[maxN];
freopen ("reguli.in","r",stdin);
scanf("%ld\n",&N);
for(i=1;i<=N;i++) {scanf("%ld\n",&x[i]); if(i>1) d[i-1]=x[i]-x[i-1];}
long int p,q,ok,k;
p=1;q=1;
do
{p=1;k=1;
q++;
ok=1;
while (d[p]!=d[q]) {q++; k++;}
for(i=q;(i<=N-1) && ok;i++) { if(d[i-k]!=d[i]) ok=0; }
}
while ((q<=N-1)&& !ok);
freopen("reguli.out","w",stdout);
printf("%ld\n",k);
for(i=1;i<=k;i++) printf("%ld\n",d[i]);
return 0;
}