Codeforces Round #224 (Div. 2): C. Arithmetic Progression(模擬)
阿新 • • 發佈:2018-11-23
題意:
給你n個數字,你需要再新增一個數字,使得最後所有數字排序之後任意相鄰兩個數之差全部相等,問可以新增多少種不同的數字
思路:
一看就是水題但是情況不少,沒了
例如所有數字全部相等,只有兩個數字,且它們的差是偶數/奇數等等
#include<stdio.h> #include<string.h> #include<algorithm> #include<map> #include<string> #include<math.h> #include<queue> #include<stack> #include<iostream> using namespace std; #define LL long long #define mod 1000000007 int a[100005], b[100005]; int main(void) { int n, i; scanf("%d", &n); for(i=1;i<=n;i++) scanf("%d", &a[i]); sort(a+1, a+n+1); if(n==1) printf("-1\n"); else { for(i=1;i<=n-1;i++) b[i] = a[i+1]-a[i]; sort(b+1, b+n); if(b[1]==b[n-1]) { if(b[1]==0) printf("1\n%d\n", a[1]); else if(n>=3 || b[1]%2) printf("2\n%d %d\n", a[1]-b[1], a[n]+b[1]); else printf("3\n%d %d %d\n", a[1]-b[1], a[1]+b[1]/2, a[2]+b[1]); } else { if(b[n-2]==b[1] && b[n-2]*2==b[n-1]) { for(i=1;i<=n-2;i++) { if(a[i+1]-a[i]!=a[i+2]-a[i+1]) { if(a[i+1]-a[i]<a[i+2]-a[i+1]) printf("1\n%d\n", a[i+1]+b[1]); else printf("1\n%d\n", a[i]+b[1]); break; } } } else printf("0\n"); } } return 0; }