Pagini recente » Cod sursa (job #1820243) | Cod sursa (job #2716925) | Cod sursa (job #1895716) | Cod sursa (job #511893) | Cod sursa (job #2131201)
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fin,*fout;
long long nr1,*v,nr2,*prefix,k=0;
int n,i;
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-1;
while( *(prefix+i) == *(prefix+i-1)+1 && *(prefix+i-1) && i>=0){
i--;
}
if(i == n-1)
i++;
fprintf(fout,"%d\n",i);
for(int j=0;j<i;j++){
fprintf(fout,"%lld\n",*(v+j));
}
return 0;
}