Cod sursa(job #732936)
| Utilizator | Data | 11 aprilie 2012 11:22:27 | |
|---|---|---|---|
| Problema | Reguli | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.54 kb |
#include<stdio.h>
FILE*f=fopen("reguli.in","r");
FILE*g=fopen("reguli.out","w");
long long v[500003],w[500003];
int n,p[500003];
void prep()
{
int k=0;
for(int i=2;i<=n;++i)
{
while(k&&w[i]!=w[k+1])
k=p[k];
if(w[k+1]==w[i])
++k;
p[i]=k;
}
}
int main()
{
fscanf(f,"%d",&n);
for(int i=1;i<=n;++i)
{
fscanf(f,"%lld",&v[i]);
w[i-1]=v[i]-v[i-1];
}
prep();
int x=n-p[n-1]-1;
fprintf(g,"%d\n",x);
for(int i=1;i<=x;++i)
fprintf(g,"%lld\n",w[i]);
fclose(f);
fclose(g);
return 0;
}
