Pagini recente » Cod sursa (job #2230001) | Cod sursa (job #592303) | Cod sursa (job #973099) | Cod sursa (job #810534) | Cod sursa (job #1310210)
#include <cstdio>
#include <vector>
#include <limits>
const long long INF=std::numeric_limits<long long>::max();
int main(){
FILE *fin=fopen("reguli.in","r");
FILE *fout=fopen("reguli.out","w");
unsigned n; fscanf(fin,"%u\n",&n);
std::vector<long long> dif(n);
dif[0]=INF;
long long old; fscanf(fin,"%lld\n",&old);
for(unsigned i=1;i<n;++i){
long long x; fscanf(fin,"%lld\n",&x);
dif[i]=x-old;
old=x;
}
unsigned L=1;
unsigned sf=0;
for(unsigned i=1;i<n;++i){
if(dif[i]==dif[i-L] && (i==n-1||dif[i+1-L]==dif[i+1]||sf+1==L)) ++sf;
else{
sf=0;
L=i;
}
if(sf==L){
sf=0;
}
}
fprintf(fout,"%u\n",L);
for(unsigned i=1;i<=L;++i) fprintf(fout,"%lld\n",dif[i]);
fclose(fout);
fclose(fin);
}