2014年1月17日 星期五
Codeforces Round #224 (Div. 2) C - Arithmetic Progression
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<vector>
using namespace std;
int s[100005];
vector<int> arr;
int main(){
int n,i,add=0,p;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&s[i]);
if(n==1){
puts("-1");
return 0;
}
sort(s,s+n);
for(i=1;i<n;i++)
arr.push_back(s[i]-s[i-1]);
sort(arr.begin(),arr.end());
p=unique(arr.begin(),arr.end())-arr.begin();
p=arr.size()-p;
while(p--) arr.pop_back();/*for(i=0;i<arr.size();i++)
printf("%d ",arr[i]);*/
if(arr.size()>2 || arr.size()==2 && arr[0]==0 || arr.size()==2 && arr[1]%arr[0] || arr.size()==2 && arr[1]/arr[0]!=2){
puts("0");
return 0;
}
if(arr.size()==1){
if(arr[0]==0) printf("1\n%d\n",s[0]);
else if(n==2 && arr[0]%2==0){
printf("3\n%d %d %d\n",s[0]-arr[0],(s[0]+s[1])/2,s[n-1]+arr[0]);
}
else{
printf("2\n%d %d\n",s[0]-arr[0],s[n-1]+arr[0]);
}
return 0;
}
for(i=1;i<n;i++){
if(s[i]-s[i-1]==arr[1])
add++,p=s[i];
}
if(add==1) printf("1\n%d\n",p-arr[0]);
else puts("0");
}
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言