제출 #866919

#제출 시각아이디문제언어결과실행 시간메모리
866919boris_mihovTeam Contest (JOI22_team)C++17
100 / 100
83 ms7868 KiB
#include <algorithm> #include <iostream> #include <numeric> #include <cassert> #include <vector> typedef long long llong; const int MAXN = 150000 + 10; struct Student { int x, y, z; }; int n; int a[MAXN]; int b[MAXN]; int c[MAXN]; Student s[MAXN]; void solve() { std::iota(a + 1, a + 1 + n, 1); std::iota(b + 1, b + 1 + n, 1); std::iota(c + 1, c + 1 + n, 1); std::sort(a + 1, a + 1 + n, [&](int i, int j) { return s[i].x < s[j].x; }); std::sort(b + 1, b + 1 + n, [&](int i, int j) { return s[i].y < s[j].y; }); std::sort(c + 1, c + 1 + n, [&](int i, int j) { return s[i].z < s[j].z; }); int ptrA = n; int ptrB = n; int ptrC = n; while (ptrA > 0 && ptrB > 0 && ptrC > 0) { if (s[a[ptrA]].x <= s[b[ptrB]].x) { ptrB--; continue; } if (s[a[ptrA]].x <= s[c[ptrC]].x) { ptrC--; continue; } if (s[b[ptrB]].y <= s[a[ptrA]].y) { ptrA--; continue; } if (s[b[ptrB]].y <= s[c[ptrC]].y) { ptrC--; continue; } if (s[c[ptrC]].z <= s[a[ptrA]].z) { ptrA--; continue; } if (s[c[ptrC]].z <= s[b[ptrB]].z) { ptrB--; continue; } std::cout << s[a[ptrA]].x + s[b[ptrB]].y + s[c[ptrC]].z << '\n'; return; } std::cout << -1 << '\n'; } void input() { std::cin >> n; for (int i = 1 ; i <= n ; ++i) { std::cin >> s[i].x >> s[i].y >> s[i].z; } } void fastIOI() { std::ios_base :: sync_with_stdio(0); std::cout.tie(nullptr); std::cin.tie(nullptr); } int main() { fastIOI(); input(); solve(); 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...