제출 #631133

#제출 시각아이디문제언어결과실행 시간메모리
631133oliversommer메기 농장 (IOI22_fish)C++17
6 / 100
104 ms24928 KiB
#include "fish.h" #include <assert.h> #include <algorithm> #include <numeric> #include <vector> using namespace std; struct Fish { int x, y, weight; bool operator<(const Fish& a) const { return y < a.y; // x == a.x ? y < a.y : x < a.x; } }; long long max_weights(int N, int M, vector<int> X, vector<int> Y, vector<int> W) { vector<Fish> all_fish(M); for (int i = 0; i < M; ++i) { all_fish[i] = {X[i], Y[i], W[i]}; } // sort(all_fish.begin(), all_fish.end()); vector<long long> pref_sum0(N + 1), pref_sum1(N + 1); int pivot = 0; for (int i = 0; i < M; ++i) { Fish& a = all_fish[i]; assert(a.x == 0 || a.x == 1); if (a.x == 0) { pref_sum0[a.y + 1] = a.weight; } else { pref_sum1[a.y + 1] = a.weight; } } // prefix sum for (int i = 1; i <= N; ++i) { pref_sum0[i] += pref_sum0[i - 1]; pref_sum1[i] += pref_sum1[i - 1]; } if(N == 2) { return max(pref_sum0[N], pref_sum1[N]); } // find pivot for (int i = 0; i <= N; ++i) { if (pref_sum0[i] + pref_sum1[N] - pref_sum1[i] > pref_sum0[pivot] + pref_sum1[N] - pref_sum1[pivot]) { pivot = i; } } return pref_sum0[pivot] + pref_sum1[N] - pref_sum1[pivot]; }
#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...