不是小水题。。。重点在特判。。。
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <ctype.h>
#include <iostream>
#include <queue>
#include <stack>
#include <map>
#include <algorithm>
#include <math.h>
#define LL long long
#define maxn 65
using namespace std;
LL a[maxn];
int main()
{
int T, N;
while (~scanf("%d", &T)) {
while (T--) {
scanf("%d", &N);
int f = 0, z = 0;
LL ans = 1;
for (int i = 1; i <= N; i++) {
LL tem;
scanf("%I64d", &tem);
if (tem == 0) {
z++;
} else if (tem < 0) {
a[++f] = tem;
} else {
ans *= tem;
}
}
if (f + z == N) {
if (f == 0) {
puts("0");
continue;
}
if (f == 1) {
if (z == 0) {
printf("%I64d\n", a[1]);
} else {
puts("0");
}
continue;
}
}
sort(a + 1, a + 1 + f);
for (int i = 1; i <= f / 2 * 2; i++) {
ans *= a[i];
}
printf("%I64d\n", ans);
}
}
return 0;
}