# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1164155 | SmuggingSpun | Catfish Farm (IOI22_fish) | C++20 | 49 ms | 7240 KiB |
#include<bits/stdc++.h>
#include "fish.h"
using namespace std;
typedef long long ll;
template<class T>void maximize(T& a, T b){
if(a < b){
a = b;
}
}
ll max_weights(int n, int m, vector<int>X, vector<int>Y, vector<int>W){
bool is_sub1 = true;
for(int& x : X){
if(x & 1){
is_sub1 = false;
break;
}
}
if(is_sub1){
return accumulate(W.begin(), W.end(), 0LL);
}
if(*max_element(X.begin(), X.end()) <= 1){
ll sum = 0;
vector<vector<pair<int, int>>>p(2);
for(int i = 0; i < m; i++){
if(X[i] == 1){
sum += W[i];
p[1].emplace_back(Y[i], W[i]);
}
else{
p[0].emplace_back(Y[i], W[i]);
}
}
p[1].emplace_back(-1, 0);
p[1].emplace_back(n, 0);
sort(p[0].begin(), p[0].end());
sort(p[1].begin(), p[1].end());
int i = 0;
ll ans = sum;
for(int j = 0; j + 1 < p[1].size(); j++){
sum -= p[1][j].second;
while(i < p[0].size() && p[0][i].first < p[1][j + 1].first){
sum += p[0][i].second;
i++;
}
maximize(ans, sum);
}
return ans;
}
}
Compilation message (stderr)
# | 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... |