Submission #653332

#TimeUsernameProblemLanguageResultExecution timeMemory
653332someoneTeam Contest (JOI22_team)C++14
100 / 100
138 ms15340 KiB
#include <bits/stdc++.h> #define int long long using namespace std; struct Val { int val, id; }; const int N = 2e5 + 42, INF = 1e18 + 42; bool b[N]; deque<Val> v[3]; int n, val[N][3]; signed main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; for(int i = 0; i < n; i++) for(int j = 0; j < 3; j++) { cin >> val[i][j]; v[j].push_back({val[i][j], i}); } for(int i = 0; i < 3; i++) sort(v[i].begin(), v[i].end(), [](Val a, Val b) { return a.val < b.val; }); while(!v[0].empty() && !v[1].empty() && !v[2].empty()) { bool continuer = false; for(int i = 0; i < 3; i++) for(int j = i+1; j < 3; j++) { if(val[v[i].back().id][j] == val[v[j].back().id][j]) { continuer = true; b[v[i].back().id] = true; } if(val[v[i].back().id][i] == val[v[j].back().id][i]) { continuer = true; b[v[j].back().id] = true; } } if(!continuer) break; for(int i = 0; i < 3; i++) while(!v[i].empty() && b[v[i].back().id]) v[i].pop_back(); } if(v[0].empty() || v[1].empty() || v[2].empty()) cout << -1; else cout << v[0].back().val + v[1].back().val + v[2].back().val; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...