Cod sursa(job #918736)

Utilizator apopeid13Apopeid Alejandro apopeid13 Data 19 martie 2013 09:09:38
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <cstdio>
#include <list>
#define NMAX 500001
using namespace std;
long long int Prefix[NMAX],aparitii[NMAX];
long long int n,x1,x2,nr;
int main(){
freopen("reguli.in","r",stdin);
freopen("reguli.out","w",stdout);
scanf("%lld",&n);
scanf("%lld",&x1);
for(register int i=1;i<n;++i){
scanf("%lld",&x2);
aparitii[i] = x2-x1;
x1 = x2;
}
int k=0;
for(register int i=2;i<n;++i){
while(k>0 && aparitii[k+1]!=aparitii[i]) k = Prefix[k];
if(aparitii[k+1]==aparitii[i])
k++;
Prefix[i] = k;
}
nr = (n-1) - Prefix[n-1];
printf("%lld\n",nr);
for(register int i=1;i<=nr;++i)
printf("%lld\n",aparitii[i]);
return 0;
}