#include <iostream>
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn = 2*1e5+5, INF = 4e18+9;
struct person{
int x, y, z;
};
struct pp{
int v, id;
};
void solve(){
int n;
cin >> n;
vector<vector<pp>> a(3, vector<pp>(n+1));
for(int i = 1; i <= n; i++){
for(int j = 0; j < 3; j++){
int v;
cin >> v;
a[j][i] = {v, i};
}
}
vector<vector<pp>> b = a;
for(int j = 0; j < 3; j++){
sort(b[j].begin()+1, b[j].end(), [&](auto a, auto b){return a.v > b.v;});
}
vector<int> pt(3, 1);
vector<bool> ban(n+1, 0);
auto check = [&]() -> bool{
for(int i = 0; i < 3; i++){
int id = b[i][pt[i]].id;
if(ban[id]){
pt[i]++;
return true;
}
}
return false;
};
while(true){
for(int i = 0; i < 3; i++){
if(pt[i] > n){
cout << -1;
return;
}
}
// for(int i = 0; i < 3; i++){
// cout << b[i][pt[i]].id << " ";
// }
// cout << "s\n";
for(int i = 0; i < 3; i++){
for(int j = 0; j < i; j++){
int idi = b[i][pt[i]].id, idj = b[j][pt[j]].id;
if(idi == idj){
ban[idi] = true;
break;
}
}
}
if(check()) continue;
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
if(i == j) continue;
int idi = b[i][pt[i]].id, idj = b[j][pt[j]].id;
if(a[j][idi].v >= a[j][idj].v){
ban[idi] = true;
break;
}
}
}
if(check()) continue;
break;
}
int ans = 0;
for(int i = 0; i < 3; i++){
ans += b[i][pt[i]].v;
}
cout << ans;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
solve();
}
| # | 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... |