Submission #625487

#TimeUsernameProblemLanguageResultExecution timeMemory
625487I_love_Hoang_YenCatfish Farm (IOI22_fish)C++17
3 / 100
98 ms19768 KiB
#include "bits/stdc++.h" using namespace std; #define int long long struct Fish { int col, row; int weight; }; bool operator < (const Fish& a, const Fish& b) { if (a.col != b.col) return a.col < b.col; return a.row < b.row; } // fishes are on even columns -> build piers on odd columns // & catch all fishes int sub1(const std::vector<Fish>& fishes) { int res = 0; for (const auto& fish : fishes) { res += fish.weight; } return res; } // fishes are on first 2 columns int sub2(int n, const std::vector<Fish>& fishes) { std::vector<int> zeroes(n); // prefix sum of fish weights at column == 0 std::vector<int> ones(n); // prefix sum of fish weights at column == 1 for (const auto& fish : fishes) { if (fish.col == 0) zeroes[fish.row] += fish.weight; if (fish.col == 1) ones[fish.row] += fish.weight; } std::partial_sum(zeroes.begin(), zeroes.end(), zeroes.begin()); std::partial_sum(ones.begin(), ones.end(), ones.begin()); int res = ones.back(); // init: only catch fishes at column == 1 for (int i = 0; i < n; ++i) { // build pier until at column 1, row 0-i res = std::max(res, zeroes[i] + ones.back() - ones[i]); } return res; } int solve(int n, const std::vector<Fish>& fishes) { if (std::all_of( fishes.begin(), fishes.end(), [] (const Fish& f) { return f.col % 2 == 0; })) { return sub1(fishes); } return sub1(fishes); } #undef int long long max_weights( int n, int nFish, std::vector<int> x, std::vector<int> y, std::vector<int> w) { std::vector<Fish> fishes; for (int i = 0; i < nFish; ++i) { fishes.push_back({x[i], y[i], w[i]}); } return solve(n, fishes); }
#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...