#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second
using namespace std;
const int maxn = 1.5e5 + 10;
int n;
//int x[maxn];
//int y[maxn];
//int z[maxn];
map <vector <int>, int> mp;
vector<int> v[3];
int ar[maxn][3];
bool cmp0(int i, int j){
return ar[i][0] < ar[j][0];
}
bool cmp1(int i, int j){
return ar[i][1] < ar[j][1];
}
bool cmp2(int i, int j){
return ar[i][2] < ar[j][2];
}
int veci(int a, int b, int c){
int cnt = 0;
for(int i = 0; i < 3; i++){
cnt += (ar[a][i] >= ar[b][i] && ar[a][i] >= ar[c][i]);
}
return cnt;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n;
for(int i = 0; i < n; i++){
for(int j = 0; j < 3; j++){
cin >> ar[i][j];
v[j].push_back(i);
}
}
sort(v[0].begin(), v[0].end(), cmp0);
sort(v[1].begin(), v[1].end(), cmp1);
sort(v[2].begin(), v[2].end(), cmp2);
// for(int i = 0; i < n; i++){
// cout << v[0][i] << ' ';
// }
// cout << endl;
int ans = 0;
// cout << endl;
while(!v[0].empty() && !v[1].empty() && !v[2].empty()){
int a = v[0].back();
int b = v[1].back();
int c = v[2].back();
int ca = veci(a, b, c), cb = veci(b, a, c), cc = veci(c, a, b);
// cout << a << ' ' << b << ' ' << c << endl;
if(ca > 1){
v[0].pop_back();
continue;
}
if(cb > 1){
v[1].pop_back();
continue;
}
if(cc > 1){
v[2].pop_back();
continue;
}
ans = ar[a][0] + ar[b][1] + ar[c][2];
break;
}
if(ans == 0) ans--;
cout << ans;
return 0;
}
# | 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... |