Submission #931895

#TimeUsernameProblemLanguageResultExecution timeMemory
931895ace5Team Contest (JOI22_team)C++17
0 / 100
83 ms27380 KiB
#include <bits/stdc++.h> using namespace std; #define int int64_t signed main() { ios_base::sync_with_stdio(false); cin.tie(0); int n; cin >> n; int xm[3][n]; vector<vector<pair<int,int>>> x(3,vector<pair<int,int>>(n)); vector<vector<int>> c(n); vector<int> rem(n,1); set<pair<int,int>> ck; vector<int> yk(3); vector<int> km(3); for(int i = 0;i < n;++i) { cin >> xm[0][i] >> xm[1][i] >> xm[2][i]; x[0][i] = {xm[0][i],i}; x[1][i] = {xm[1][i],i}; x[2][i] = {xm[2][i],i}; } for(int j =0;j < 3;++j) { yk[j] = -1; sort(x[j].begin(),x[j].end()); for(int u = x[j].size()-1;u >= 0;--u) { if(x[j][u].first == x[j].back().first) { c[x[j][u].second].push_back(j); km[j]++; } else { yk[j] = u; break; } } } for(int j = 0;j < n;++j) { ck.insert({-int(c[j].size()),j}); } int ky =n; while(ck.size()) { int v = (*ck.begin()).second; ck.erase(ck.begin()); if(c[v].size() >= 2) { ky--; rem[v] = 0; for(auto j:c[v]) { km[j]--; if(km[j] == 0) { int nyk = -1; for(int u = yk[j];u >= 0;--u) { if(x[j][u].first == x[j][yk[j]].first) { ck.erase({-int(c[x[j][u].second].size()),x[j][u].second}); c[x[j][u].second].push_back(j); ck.insert({-int(c[x[j][u].second].size()),x[j][u].second}); km[j]++; } else { nyk = u; break; } } yk[j] = nyk; } } c[v].clear(); } else break; } int64_t ans = 0; for(int i = 0;i < 3;++i) { int64_t mx = 0; for(int j = 0;j < n;++j) { mx = max(mx,rem[j] * xm[i][j]); } ans += mx; } cout << (ans == 0 || ky <= 2 ? -1 : ans); return 0; }
#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...