Pagini recente » Cod sursa (job #790286) | Cod sursa (job #556855) | Cod sursa (job #3157080) | Cod sursa (job #1558127) | Cod sursa (job #2131205)
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fin,*fout;
long long nr1,*v,nr2,*prefix,k=0,i;
int n;
fin = fopen("reguli.in","rt");
fout = fopen("reguli.out","wt");
fscanf(fin,"%d%lld",&n,&nr1);
v = (long long *)calloc(n-1,sizeof(long long));
prefix = (long long *)calloc(n-1,sizeof(long long));
n--;
for(i=0;i<n;i++){
fscanf(fin,"%lld",&nr2);
*(v+i) = nr2-nr1;
nr1 = nr2;
}
for(i=1;i<n;i++){
while(k && *(v+i) != *(v+k))
k = *(prefix+k-1);
if(*(v+i) == *(v+k))
k++;
*(prefix+i) = k;
}
i = n-(*(prefix+n-1));
fprintf(fout,"%d\n",i);
for(int j=0;j<i;j++){
fprintf(fout,"%lld\n",*(v+j));
}
return 0;
}