Submission #626724

#TimeUsernameProblemLanguageResultExecution timeMemory
626724abeker메기 농장 (IOI22_fish)C++17
9 / 100
538 ms50312 KiB
#include <bits/stdc++.h> #include "fish.h" using namespace std; typedef long long ll; const ll INF = 1e18; ll max_weights(int N, int M, vector <int> x, vector <int> y, vector <int> w) { for (auto &it : x) it++; vector <ll> sum(N + 2); vector <map <int, ll>> diff(N + 2); for (int i = 0; i < M; i++) { sum[x[i]] += w[i]; diff[x[i] + 1][y[i]] += w[i]; diff[x[i]][y[i]] -= w[i]; } vector <ll> dp(5, -INF); dp[0] = dp[1] = 0; for (int i = 1; i <= N + 1; i++) { auto update = [&](ll &ref, ll val) { if (val > ref) ref = val; }; ll curr = 0; vector <ll> trans(5); trans[2] = sum[i - 1]; trans[3] = sum[i]; for (auto it : diff[i]) { curr += it.second; update(trans[1], curr); update(trans[4], -curr); } vector <ll> nxt(5, -INF); for (int j = 0; j < 5; j++) { update(nxt[j], dp[(j + 4) % 5]); if (j == 1 || j == 4) update(nxt[j], dp[j]); nxt[j] += trans[j]; } dp = nxt; } return max({dp[0], dp[3], dp[4], 0ll}); }
#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...