제출 #1261471

#제출 시각아이디문제언어결과실행 시간메모리
1261471nguynTeam Contest (JOI22_team)C++20
100 / 100
97 ms8068 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define F first #define S second #define pb push_back #define pii pair<int, int> const int N = 1.5e5 + 5; struct Student { int x, y, z, i; } a[N], b[N], c[N]; bool cmp1(Student x, Student y) { return (pii){x.x, x.i} <= (pii){y.x, y.i}; } bool cmp2(Student x, Student y) { return (pii){x.y, x.i} <= (pii){y.y, y.i}; } bool cmp3(Student x, Student y) { return (pii){x.z, x.i} <= (pii){y.z, y.i}; } int vis[N]; int n; signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; for (int i = 1; i <= n; i++) { int x, y, z; cin >> x >> y >> z; a[i] = {x, y, z, i}; b[i] = c[i] = a[i]; } sort(a + 1, a + 1 + n, cmp1); sort(b + 1, b + 1 + n, cmp2); sort(c + 1, c + 1 + n, cmp3); int id1, id2, id3; id1 = id2 = id3 = n; while(id1 >= 1 && id2 >= 1 && id3 >= 1) { if (a[id1].x > b[id2].x && a[id1].x > c[id3].x && b[id2].y > a[id1].y && b[id2].y > c[id3].y && c[id3].z > a[id1].z && c[id3].z > b[id2].z) { cout << a[id1].x + b[id2].y + c[id3].z; return 0; } else { if (a[id1].x <= b[id2].x || c[id3].z <= b[id2].z) vis[b[id2].i] = 1; if (b[id2].y <= a[id1].y || c[id3].z <= a[id1].z) vis[a[id1].i] = 1; if (a[id1].x <= c[id3].x || b[id2].y <= c[id3].y) vis[c[id3].i] = 1; } while(vis[a[id1].i] && id1 >= 1) id1--; while(vis[b[id2].i] && id2 >= 1) id2--; while(vis[c[id3].i] && id3 >= 1) id3--; } cout << -1; }
#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...