Submission #1216136

#TimeUsernameProblemLanguageResultExecution timeMemory
1216136Mousa_AboubakerCatfish Farm (IOI22_fish)C++20
0 / 100
101 ms13572 KiB
#include "fish.h" #include <bits/stdc++.h> using namespace std; using ll = long long; long long max_weights(int N, int M, vector<int> X, vector<int> Y, vector<int> W) { auto n = N, m = M; auto x = X, y = Y, w = W; if(n == 1) return 0; if(n == 2) { ll f = 0, s = 0; for(int i = 0; i < m; i++) { if(x[i] == 0) f += w[i]; else s += w[i]; } return max(f, s); } for (auto &i : y) i = n - i - 1; vector<int> cc; for (int i = 0; i < m; i++) cc.push_back(y[i]); sort(cc.begin(), cc.end()); cc.erase(unique(cc.begin(), cc.end()), cc.end()); for (auto &i : y) i = lower_bound(cc.begin(), cc.end(), i) - cc.begin(); int k = cc.size(); vector<ll> pref0(k), pref1(k); for(int i = 0; i < m; i++) { if(x[i] == 0) pref0[y[i]] = w[i]; else pref1[y[i]] = w[i]; } for(int i = 1; i < k; i++) pref0[i] += pref0[i - 1], pref1[i] += pref1[i - 1]; ll mx = pref1.back(); for(int i = 0; i < k; i++) { ll curr = pref1.back() - pref1[i] + pref0[i]; mx = max(mx, curr); } return mx; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...