제출 #1131478

#제출 시각아이디문제언어결과실행 시간메모리
1131478lanplotTeam Contest (JOI22_team)C++20
100 / 100
392 ms32132 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define MAXN (1000005) int main(){ ios_base::sync_with_stdio(false);cin.tie(0); ll N; cin>>N; pair<ll,pair<ll,ll> > arr[N]; //X, Y, Z set<pair<ll,ll> > sortX, sortY, sortZ; for(ll i = 0;i < N;i++){ cin>>arr[i].first>>arr[i].second.first>>arr[i].second.second; sortX.insert({arr[i].first,i}); sortY.insert({arr[i].second.first,i}); sortZ.insert({arr[i].second.second,i}); } ll ans = -1e18; while(!sortX.empty()){ ll A = prev(sortX.end())->second; ll B = prev(sortY.end())->second; ll C = prev(sortZ.end())->second; if(A == B || A == C){ //remove A auto it1 = sortX.find({arr[A].first,A}); sortX.erase(it1); auto it2 = sortY.find({arr[A].second.first,A}); sortY.erase(it2); auto it3 = sortZ.find({arr[A].second.second,A}); sortZ.erase(it3); }else if(B == C){ //remove B auto it1 = sortX.find({arr[B].first,B}); sortX.erase(it1); auto it2 = sortY.find({arr[B].second.first,B}); sortY.erase(it2); auto it3 = sortZ.find({arr[B].second.second,B}); sortZ.erase(it3); }else if(prev(sortX.end())->first == arr[prev(sortY.end())->second].first){ //remove A auto it1 = sortX.find({arr[B].first,B}); sortX.erase(it1); auto it2 = sortY.find({arr[B].second.first,B}); sortY.erase(it2); auto it3 = sortZ.find({arr[B].second.second,B}); sortZ.erase(it3); }else if(prev(sortX.end())->first == arr[prev(sortZ.end())->second].first){ //remove A auto it1 = sortX.find({arr[C].first,C}); sortX.erase(it1); auto it2 = sortY.find({arr[C].second.first,C}); sortY.erase(it2); auto it3 = sortZ.find({arr[C].second.second,C}); sortZ.erase(it3); }else if(prev(sortY.end())->first == arr[prev(sortX.end())->second].second.first){ //remove B auto it1 = sortX.find({arr[A].first,A}); sortX.erase(it1); auto it2 = sortY.find({arr[A].second.first,A}); sortY.erase(it2); auto it3 = sortZ.find({arr[A].second.second,A}); sortZ.erase(it3); }else if(prev(sortY.end())->first == arr[prev(sortZ.end())->second].second.first){ //remove B auto it1 = sortX.find({arr[C].first,C}); sortX.erase(it1); auto it2 = sortY.find({arr[C].second.first,C}); sortY.erase(it2); auto it3 = sortZ.find({arr[C].second.second,C}); sortZ.erase(it3); }else if(prev(sortZ.end())->first == arr[prev(sortX.end())->second].second.second){ //remove C auto it1 = sortX.find({arr[A].first,A}); sortX.erase(it1); auto it2 = sortY.find({arr[A].second.first,A}); sortY.erase(it2); auto it3 = sortZ.find({arr[A].second.second,A}); sortZ.erase(it3); }else if(prev(sortZ.end())->first == arr[prev(sortY.end())->second].second.second){ //remove C auto it1 = sortX.find({arr[B].first,B}); sortX.erase(it1); auto it2 = sortY.find({arr[B].second.first,B}); sortY.erase(it2); auto it3 = sortZ.find({arr[B].second.second,B}); sortZ.erase(it3); }else{ ans = arr[A].first + arr[B].second.first + arr[C].second.second; break; } } if(ans == -1e18) cout<<-1<<'\n'; else cout<<ans<<'\n'; }
#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...