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 <bits/stdc++.h>
using namespace std;
#define int long long
signed main() {
//your code goes here
int n;
cin >> n;
vector <vector <int>> arr = {};
vector <vector <int>> arr2 = {};
for(int i = 0; i < n; i++) {
int x, y, z;
cin >> x >> y >> z;
arr.push_back({x, y, z});
arr2.push_back({y, z, i});
}
multiset <int> mult = {};
for(int i = 0; i < n; i++) {
mult.insert(arr2[i][1]);
}
sort(arr2.begin(), arr2.end(), [&](auto& left, auto& right) {
return left[0] > right[0];
});
int cur = 0;
int total = -1e18;
for(int i = 0; i < n; i++) {
cur = max(cur, i);
int a = arr2[i][0];
int b = arr2[i][1];
int c = arr2[i][2];
// cout << i << " v " << endl;
for(int i = cur; i < n; i++) {
if(arr2[cur][0] != a) {
break;
}
auto it = mult.find(arr2[cur][1]);
mult.erase(it);
cur++;
}
auto it = mult.end();
int v = 0;
if(mult.size() != 0) {
it--;
v = *it;
}
if(v <= b) {
arr[c].push_back(-1e18);
continue;
}
arr[c].push_back(v+a);
}
// cout << "HELLO" << endl;
for(int i = 0; i < n; i++) {
int v = arr[i][3];
mult.insert(v);
}
sort(arr.begin(), arr.end(), [&](auto& left, auto& right) {
return left[0] > right[0];
});
cur = 0;
for(int i = 0; i < n; i++) {
cur = max(cur, i);
int a = arr[i][0];
int b = arr[i][1];
int c = arr[i][2];
int d = arr[i][3];
for(int i = cur; i < n; i++) {
if(arr[cur][0] != a) {
break;
}
auto it = mult.find(arr[cur][3]);
mult.erase(it);
cur++;
}
auto it = mult.end();
int v = -1e18;
if(mult.size() != 0) {
it--;
v = *it;
}
if(v == -1e18) {
continue;
}
int v2 = v+a;
// cout << i << " " << v2 << " " << v << " " << a << " " << b << " " << c << " " << d << endl;
total = max(total, v2);
}
if(total == -1e18) {
cout << -1 << endl;
} else {
cout << total << endl;
}
return 0;
}
Compilation message (stderr)
team.cpp: In function 'int main()':
team.cpp:66:13: warning: unused variable 'b' [-Wunused-variable]
66 | int b = arr[i][1];
| ^
team.cpp:67:13: warning: unused variable 'c' [-Wunused-variable]
67 | int c = arr[i][2];
| ^
team.cpp:68:13: warning: unused variable 'd' [-Wunused-variable]
68 | int d = arr[i][3];
| ^
# | 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... |