代码:
#include <iostream>
#include <queue>
#include <map>
using namespace std;
const int N = 500010;
#define int long long
int n;
struct ball {
int r1, r2, r3;
} a[N];
struct date {
int a, b;
int id;
};
map<pair<int, int>, vector<pair<int, int> > > m;
bool flag = false;
int ans = 0;
pair<int, int> p;
int max_r, max_id;
ball max_ball;
int read() {
int x = 0, f = 1;
char ch = getchar();
while (ch < '0' || ch > '9') { f = (ch == '-' ? -1 : f); ch = getchar(); }
while (ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); }
return x * f;
}
signed main() {
n = read();
for (int i = 1; i <= n; i++) {
a[i].r1 = read(), a[i].r2 = read(), a[i].r3 = read();
int res = min(a[i].r1, min(a[i].r2, a[i].r3));
if (res <= max_r) continue;
max_r = res, max_id = i, max_ball = a[i];
}
for (int i = 1; i <= n; i++) {
pair<int, int> v1, v2, v3, v4, v5, v6;
v1 = make_pair(a[i].r1, a[i].r2), v2 = make_pair(a[i].r1, a[i].r3);
v3 = make_pair(a[i].r2, a[i].r1), v4 = make_pair(a[i].r2, a[i].r3);
v5 = make_pair(a[i].r3, a[i].r1), v6 = make_pair(a[i].r3, a[i].r2);
m[v1].push_back(make_pair(a[i].r3, i)), m[v2].push_back(make_pair(a[i].r2, i));
m[v3].push_back(make_pair(a[i].r3, i)), m[v4].push_back(make_pair(a[i].r1, i));
m[v5].push_back(make_pair(a[i].r2, i)), m[v6].push_back(make_pair(a[i].r1, i));
}
for (auto it : m) {
int id1 = -1, id2 = -1, val1 = 0, val2 = 0;
for (auto i : it.second) {
if (i.first < val1) continue;
val1 = i.first, id1 = i.second;
}
for (auto i : it.second) {
if (i.first < val2 || i.second == id1) continue;
val2 = i.first, id2 = i.second;
}
if (~id1 && ~id2) {
int res = min(val1 + val2, min(it.first.first, it.first.second));
res = res * res * res / 4;
if (res <= ans) continue;
ans = res;
if (id1 > id2) swap(id1, id2);
p = make_pair(id1, id2);
}
}
int r = min(max_ball.r1, min(max_ball.r2, max_ball.r3));
max_r = r * r * r / 4;
if (max_r >= ans) {
cout << 0 << endl;
cout << max_id << endl;
cout << r * r * r / 4;
return 0;
}
cout << 1 << endl;
cout << p.first << " " << p.second << endl;
cout << ans;
return 0;
}
我认为复杂度好像是 6×nlogn,在 O2 环境和 2s 环境下貌似能过,但是不知道为什么最后一个点 TLE 了。