Submission #1216142

#TimeUsernameProblemLanguageResultExecution timeMemory
1216142Mousa_AboubakerCatfish Farm (IOI22_fish)C++20
0 / 100
17 ms7756 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; vector<int> ord(m); iota(ord.begin(), ord.end(), 0); sort(ord.begin(), ord.end(), [&](int l, int r) { return x[l] < x[r]; }); vector dp(m + 1, vector<ll>(2, 0)); // dp[i][j] = the max score I can get if I built a pier in i, or if I didn't for(int i = 0; i < m; i++) { if(i == 0 and x[ord[0]] == 0) continue; dp[i + 1][0] = max(dp[i][0], dp[i][1] + w[ord[i]]); dp[i + 1][1] = max(dp[i][1], dp[i][0]); if(i) dp[i + 1][1] = max(dp[i + 1][1], max(dp[i - 1][0], dp[i - 1][1]) + w[ord[i - 1]]); } ll res = max(dp.back()[0], dp.back()[1]); if(x[ord[m - 1]] != n - 1) { res = max(res, max(dp.end()[-2][0], dp.end()[-2][1]) + w[ord[m - 1]]); } return res; }
#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...