Pagini recente » Cod sursa (job #689107) | Cod sursa (job #576383) | Cod sursa (job #484301) | Cod sursa (job #1739194) | Cod sursa (job #93135)
Cod sursa(job #93135)
#include <cstdlib>
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <alloc.h>
fstream f("reguli.in",ios::in),g("reguli.out",ios::out);
long long *x,*a;
long n;
void citire();
void diferente();
void cauta_an();
long cautareavansata(long);
void ok(long);
main(){
citire();
diferente();
cauta_an();
return 0;
}
void citire(){
long i;
f>>n;
x=(long long*)malloc(n*sizeof(long long));
a=(long long*)malloc(n*sizeof(long long));
for(i=0;i<n;++i){
f>>x[i];
}
f.close();
}
void diferente(){
long i;
for(i=1;i<n;++i){
a[i-1]=x[i]-x[i-1];
}
}
long first_i(){
long k;
for(k=1;k<n-1;++k){
if(a[k]!=a[0]){
return k;
}
}
return 0;
}
void cauta_an(){
long j;
const long i=0;
for(j=first_i();j<n-1;j++){
const long d=j-i+1;
if(i+d>n||j+d>n){
if(cautareavansata(j)){
ok(j);
}
continue;
}
if(a[i]==a[i+d]&&a[j]==a[j+d]){
ok(j);
}
}
}
void ok(long j){
long i;
g<<j+1<<'\n';
for(i=0;i<=j;++i){
g<<a[i]<<'\n';
}
g.close();
exit(0);
}
long cautareavansata(long j){
long i,k=0;
for(i=0;i<n;++i){
if(k>j){
k=0;
}
if(x[i] != x[i-1] + (i%k==0)?a[k]:a[i%k] ){
return 0;
}
}
return 1;
}