问题 D: 猫和兔子

时间限制: 1 Sec 内存限制: 128 MB

[状态] [提交] [命题人:admin]

题目描述

一只猫和一只兔子玩简单的猜谜游戏。猫选择了两个不同的正整数X和Y,然后他告诉兔子N个正整数,这N个正整数当中,有一个是X+Y,还有一个是X-Y,剩余的N-2个是任意给的。兔子喜欢大整数,输出X*Y的最大可能值。

输入

多组测试数据。
第一行,一个整数G,表示有G组测试数据。1<=G<=5。
每组测试数据格式如下:
第1行,一个正整数N。2<=N<=50。
第2行,N个正整数,空格分开,就是猫给出的那N个正整数,范围都是【1,100】,数据保证这N个正整数都是不同的,而且一定有解。
输出
共G行,每行一个正整数。
样例输入 Copy
5
3
1 4 5
4
1 4 5 8
9
9 8 7 6 5 4 3 2 1
2
2 100
5
50 58 47 57 40
样例输出 Copy
6
12
20
2499
441
提示
对于第2组测试数据的解释:
当X=3且Y=2是可行的,此时XY=6。
但X=6且Y=2也是可行,此时X
Y=12。
可以发现,后者更优。

#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
int main() {
    int n,m,t,x,i,j,s;
    int a[1000],b;
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        for(i=1;i<=n;i++)
            scanf("%d",&a[i]);
            m=-1;
        sort(a+1,a+1+n);
        for(j=1;j<=n;j++)
        for(i=1;i<=n;i++)
        {
            x=a[i]*a[i];
            s=a[j]*a[j];
            if((x-s)%4==0&&i!=j)
            {
                b=(x-s)/4;
                m=max(b,m);
            }
        }
        printf("%d\n",m);
    }
    return 0;   
}