# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1247410 | fskarica | Catfish Farm (IOI22_fish) | C++20 | 0 ms | 0 KiB |
#include "fish.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fi first
#define se second
#define pii pair<int, int>
int n, m;
vector <int> vx, vy, w;
ll max_weights(int N, int M, vector<int> X, vector<int> Y, vector<int> W) {
n = N, m = M, vx = X, vy = Y, w = W;
vector <pii> v0, v1;
ll zbr = 0, zbr2 = 0;
for (int i = 0; i < m; i++) {
if (vx[i] == 0) v0.push_back({vy[i], w[i]}) zbr2 += w[i];
else v1.push_back({vy[i], w[i]}), zbr += w[i];
}
if (n == 2) return max(zbr, zbr2);
sort(v0.begin(), v0.end());
sort(v1.begin(), v1.end());
int pos = 0;
ll ret = zbr;
for (auto e : v0) {
while (pos < v1.size() && v1[pos].fi <= e.fi) {
zbr -= v1[pos].se;
pos++;
}
zbr += e.se;
ret = max(ret, zbr);
}
return ret;
}
//int main() {
//}