题目:Problem - B - Codeforces
打表找规律QvQ
题目:
ac代码:
#include<iostream>
#include<cstdio>
using namespace std;
typedef long long int LL ;
const int N = 1e5 + 10;
LL a[N];
int main()
{
int t;
cin >> t;
while(t--)
{
int n;
cin >> n ;
LL maxd = -1;
for(int i = 1; i <= n ; i ++)
{
cin >> a[i];
maxd = max(a[i],maxd);
}
LL m , c;
int num = 0 ;
for(int i = 2; i <= n ; i ++)
if(a[i] - a[i-1] == a[2]- a[1])num++;
if(num == n - 1)
{
cout << 0 <<endl;
continue;
}
for(int i = 2; i <= n ; i ++)
if(a[i] >= a[i-1])c = a[i] - a[i-1];
for(int i = 2; i <=n ; i ++)
if(a[i] < a[i-1])m = a[i-1] + c - a[i];
bool f = true;
for(int i = 2 ; i <= n ; i ++)
{
if(a[i] >= a[i-1] && c != a[i] - a[i-1])f = false;
if(a[i] < a[i-1] && m != a[i-1] + c - a[i]) f = false;
}
if(f && m > c && m > maxd)cout << m <<' '<< c << endl;
else cout <<-1<<endl;
}
}