Pagini recente » Cod sursa (job #2241927) | Cod sursa (job #2189547) | Cod sursa (job #462135) | Cod sursa (job #504610) | Cod sursa (job #912555)
Cod sursa(job #912555)
#include <cstdio>
#include <list>
#define NMAX 500001
using namespace std;
int Prefix[NMAX],aparitii[NMAX];
int n,x1,x2,nr;
int main(){
freopen("reguli.in","r",stdin);
freopen("reguli.out","w",stdout);
scanf("%d",&n);
scanf("%d",&x1);
for(register int i=1;i<n;++i){
scanf("%d",&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("%d\n",nr);
for(register int i=1;i<=nr;++i)
printf("%d\n",aparitii[i]);
return 0;
}