제출 #1282609

#제출 시각아이디문제언어결과실행 시간메모리
1282609duyanhchupapiTeam Contest (JOI22_team)C++20
100 / 100
62 ms7624 KiB
#include <bits/stdc++.h> #define fi first #define se second using namespace std; using ll = long long; const int N = 150005; int n, inf = 1e9; struct kid { int x,y,z,id; } X[N], Y[N], Z[N]; bool used[N]; bool ok(int i,int j,int k) { if(X[i].id == Y[j].id || Y[j].id == Z[k].id|| Z[k].id == X[i].id) return false; if(X[i].x <= max(Y[j].x, Z[k].x)) return false; if(Y[j].y <= max(X[i].y, Z[k].y)) return false; if(Z[k].z <= max(X[i].z, Y[j].z)) return false; return true; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; for(int i=1;i<=n;++i) { int x,y,z; cin >> x >> y >> z; X[i] = {x,y,z,i}; Y[i] = {x,y,z,i}; Z[i] = {x,y,z,i}; } sort(X+1,X+n+1, [&](kid p1, kid p2) {return p1.x < p2.x;}); sort(Y+1,Y+n+1, [&](kid p1, kid p2) {return p1.y < p2.y;}); sort(Z+1,Z+n+1, [&](kid p1, kid p2) {return p1.z < p2.z;}); int i = n, j = n, k = n; while(i && j && k) { if(ok(i,j,k)) { cout << X[i].x + Y[j].y + Z[k].z; return 0; } if(X[i].y == Y[j].y || X[i].z == Z[k].z) used[X[i].id] = 1; if(X[i].x == Y[j].x || Y[j].z == Z[k].z) used[Y[j].id] = 1; if(X[i].x == Z[k].x || Y[j].y == Z[k].y) used[Z[k].id] = 1; while(used[X[i].id]) --i; while(used[Y[j].id]) --j; while(used[Z[k].id]) --k; } cout << -1; 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...