-
Notifications
You must be signed in to change notification settings - Fork 0
/
224_div2c.cpp
60 lines (60 loc) · 978 Bytes
/
224_div2c.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <bits/stdc++.h>
using namespace std ;
int n;
int a[110000],b[110000];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i)
scanf("%d",&a[i]);
sort(a+1,a+1+n);
if(n==1)
printf("-1\n");
if(n>1)
{
int f=1;
for(int i=2;i<=n;++i)
if(a[i]!=a[i-1])
f=0;
if(f)
{
printf("1\n%d\n",a[1]);
return 0;
}
}
if(n==2)
{
int s=a[2]-a[1];
if(s&1)
printf("2\n%d %d\n",a[1]-s,a[2]+s);
else
printf("3\n%d %d %d\n",a[1]-s,a[1]+s/2,a[2]+s);
}
if(n>=3)
{
for(int i=1;i<n;++i)
b[i]=a[i+1]-a[i];
sort(b+1,b+n);
int t=1;
for(int i=2;i<n;++i)
if(b[i]!=b[i-1])
++t;
if(t==1)
printf("2\n%d %d\n",a[1]-b[1],a[n]+b[1]);
if(t>2||t==2&&b[n-2]*2!=b[n-1])
printf("0\n");
if(t==2&&b[n-2]*2==b[n-1])
{
for(int i=2;i<n;++i)
if(a[i]-a[i-1]!=a[i+1]-a[i])
{
if(a[i]-a[i-1]>a[i+1]-a[i])
printf("1\n%d\n",a[i-1]+b[1]);
else
printf("1\n%d\n",a[i]+b[1]);
break;
}
}
}
return 0;
}