Submission #917979

#TimeUsernameProblemLanguageResultExecution timeMemory
917979manishjha91Team Contest (JOI22_team)C++17
0 / 100
66 ms8360 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; using ull = unsigned long long; using lld = long double; const int inf = 1e9; // #ifndef ONLINE_JUDGE // #include "E:\Personal\cpp_codes\debugalgo.h" // #else // #define debug(x) // #endif ll get(vector<array<int,3>>&b, int idx) { int n = b.size(); vector<array<int,3>> a = b; sort(a.begin(),a.end(), [&](array<int,3>x, array<int,3>y){ return x[idx]<y[idx]; }); priority_queue<pair<int,int>> pqy,pqz; vector<array<int,3>> curr; int l = 0; ll mxy = -inf, mxz = -inf; ll ans = -1; for(int i=0; i<n; i++) { if(a[i][idx]==a[l][idx]) { curr.push_back({i,a[i][(idx+1)%3],a[i][(idx+2)%3]}); } else { while(!curr.empty()) { pqy.push({curr.back()[1],curr.back()[0]}); pqz.push({curr.back()[2],curr.back()[0]}); curr.pop_back(); } curr.push_back({i,a[i][(idx+1)%3],a[i][(idx+2)%3]}); l = i; } if((!pqy.empty()) && (pqy.top().second!=pqz.top().second) && (a[pqy.top().second][(idx+2)%3]!=pqz.top().first) && (a[pqz.top().second][(idx+1)%3]!=pqy.top().first)) { if(mxy+mxz<pqy.top().first + pqz.top().first) { mxy = max((ll)pqy.top().first,mxy); mxz = max((ll)pqz.top().first,mxz); } } if(a[i][(idx+1)%3]<mxy && a[i][(idx+2)%3]<mxz) { ans = max(ans, a[i][idx]+mxy+mxz); } } return ans; } void solve() { int n; cin >> n; vector<array<int,3>> a(n); int mxx = 0, mxy = 0, mxz = 0; int mnx = inf, mny = inf, mnz = inf; for (int i = 0; i < n; i++) { cin >> a[i][0]>>a[i][1]>>a[i][2]; mxx = max(mxx,a[i][0]); mxy = max(mxy,a[i][1]); mxz = max(mxz,a[i][2]); mnx = min(mnx, a[i][0]); mny = min(mny, a[i][1]); mnz = min(mnz, a[i][2]); } vector<array<int,3>> b; for(int i=0; i<n; i++) { int cnt = 0; if(a[i][0]==mxx) cnt++; if(a[i][1]==mxy) cnt++; if(a[i][2]==mxz) cnt++; if(cnt>=2) continue; b.push_back(a[i]); } swap(a,b); n = a.size(); if(n<=2) { cout<<"-1\n"; return; } ll ans = -1; for(int i=0; i<3; i++) { ans = max(ans, get(a,i)); } cout<<ans<<"\n"; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); // #ifndef ONLINE_JUDGE // freopen("error.txt", "w", stderr); // #endif int tt = 1; // cin >> tt; while (tt--) { solve(); } }
#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...