#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define F first
#define S second
#define pb push_back
#define pii pair<int, int>
const int N = 1.5e5 + 5;
struct Student {
int x, y, z, i;
} a[N], b[N], c[N];
bool cmp1(Student x, Student y) {
return (pii){x.x, x.i} <= (pii){y.x, y.i};
}
bool cmp2(Student x, Student y) {
return (pii){x.y, x.i} <= (pii){y.y, y.i};
}
bool cmp3(Student x, Student y) {
return (pii){x.z, x.i} <= (pii){y.z, y.i};
}
int vis[N];
int n;
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) {
int x, y, z;
cin >> x >> y >> z;
a[i] = {x, y, z, i};
b[i] = c[i] = a[i];
}
sort(a + 1, a + 1 + n, cmp1);
sort(b + 1, b + 1 + n, cmp2);
sort(c + 1, c + 1 + n, cmp3);
int id1, id2, id3;
id1 = id2 = id3 = n;
while(id1 >= 1 && id2 >= 1 && id3 >= 1) {
if (a[id1].x > b[id2].x && a[id1].x > c[id3].x && b[id2].y > a[id1].y && b[id2].y > c[id3].y && c[id3].z > a[id1].z && c[id3].z > b[id2].z) {
cout << a[id1].x + b[id2].y + c[id3].z;
return 0;
}
else {
if (a[id1].x <= b[id2].x || c[id3].z <= b[id2].z) vis[b[id2].i] = 1;
if (b[id2].y <= a[id1].y || c[id3].z <= a[id1].z) vis[a[id1].i] = 1;
if (a[id1].x <= c[id3].x || b[id2].y <= c[id3].y) vis[c[id3].i] = 1;
}
while(vis[a[id1].i] && id1 >= 1) id1--;
while(vis[b[id2].i] && id2 >= 1) id2--;
while(vis[c[id3].i] && id3 >= 1) id3--;
}
cout << -1;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |