This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <cassert>
using namespace std;
int main() {
int n; cin >> n;
vector<int> x(n), y(n), z(n);
for (int i = 0; i < n; ++i) cin >> x[i] >> y[i] >> z[i];
vector<int> byX(n);
for (int i = 0; i < n; ++i) byX[i] = i;
sort(byX.begin(), byX.end(), [&x](int i, int j){return x[i]>x[j];});
priority_queue<pair<int, int>> byY, byZ;
for (int i = 0; i < n; ++i) {
byY.emplace(y[i], i);
byZ.emplace(z[i], i);
}
int bestTeam = -1;
for (int i : byX) {
while (!byY.empty() && !byZ.empty()) {
if (x[byY.top().second] >= x[i]) byY.pop();
else if (x[byZ.top().second] >= x[i]) byZ.pop();
else if (z[byY.top().second] >= byZ.top().first) byY.pop();
else if (y[byZ.top().second] >= byY.top().first) byZ.pop();
/* For the two lines above, >= is necessary rather than simply ==
This is because a beaver may have been deleted from byZ since it was both y-maximal and z-maximal
but not from byY, since we do not find and delete these double maximal beavers from the other pq.
This means the z value of a beaver in byY may be greater than the largest z value in byZ.
The same applies to the y values of beavers in byZ.
*/
else break;
}
if (!byY.empty() && !byZ.empty()) {
int j = byY.top().second, k = byZ.top().second;
assert(y[j] > y[k]); assert(z[k] > z[j]);
int Y = byY.top().first, Z = byZ.top().first;
if (Y > y[i] && Z > z[i]) bestTeam = max(bestTeam, x[i] + Y + Z);
}
}
cout << bestTeam << endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |