#include "fish.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
long long max_weights(int N, int M, vector<int> X, vector<int> Y, vector<int> W) {
ll colOne = 0;
ll colTwo = 0;
for(int i = 0; i < M; i++){
assert(X[i] <= 1);
if(X[i] == 0) colOne += W[i];
if(X[i] == 1) colTwo += W[i];
}
if(N <= 2) return max(colOne, colTwo);
vector<vector<int>> a;
vector<vector<int>> b;
for(int i = 0; i < M; i++){
if(X[i] == 0) a.push_back({Y[i], W[i]});
if(X[i] == 1) b.push_back({Y[i], W[i]});
}
sort(a.begin(), a.end());
sort(b.begin(), b.end());
int bCounter = 0;
ll stackA = 0; ll stackB = 0; ll best = 0;
for(int i = 0; i < (int)a.size(); i++){
stackA += a[i][1];
while(bCounter < (int)b.size() && b[bCounter][0] <= a[i][0]){
stackB += b[bCounter][1];
bCounter++;
}
best = max(
best,
stackA + colTwo - stackB
);
}
return max({colOne, colTwo, best});
}
// #include "grader.cpp"
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |