Submission #1032823

#TimeUsernameProblemLanguageResultExecution timeMemory
1032823Mr_HusanboyCatfish Farm (IOI22_fish)C++17
9 / 100
1107 ms641600 KiB
#include "fish.h" #include <bits/stdc++.h> using namespace std; #define ff first #define ss second #define all(a) (a).begin(), (a).end() #define ll long long template<typename T> int len(T &a){ return a.size(); } mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); long long max_weights(int n, int m, std::vector<int> x, std::vector<int> y, std::vector<int> w) { vector<map<int, ll>> s(n); vector<map<int, ll>> pref(n); for(int i = 0; i < m; i ++) s[x[i]][y[i] + 1] = w[i]; pref = s; for(int i = 0; i < n; i ++){ s[i][0] = 0; if(i) for(auto [a, b] : s[i - 1]) s[i][a] = max(s[i][a], 0ll); if(i + 1 < n) for(auto [a, b] : s[i + 1]) s[i][a] = max(s[i][a], 0ll); ll cur = 0; for(auto &[_, ss] : pref[i]){ cur += ss; ss = cur; } } map<tuple<int,int,int>, ll> memo; auto calc = [&](auto &calc, int st, int i, int j)->ll{ if(st == 1){ if(i < j){ return pref[st - 1][j] - pref[st - 1][i]; } return pref[st][i] - pref[st][j]; } if(memo.count({st, i, j})) return memo[{st, i, j}]; if(i >= j){ ll mx = 0; for(auto [k, val] : s[st - 2]){ mx = max(mx, calc(calc, st - 1, k, i)); } return memo[{st, i, j}] = mx + pref[st][i] - pref[st][j]; } ll res = 0; ll sum = pref[st - 1][j] - pref[st - 1][i]; for(auto [k, val] : s[st - 2]){ if(k <= i){ res = max(res, calc(calc, st - 1, k, i) + sum); }else if(k < j){ res = max(res, calc(calc, st - 1, k, i) + pref[st - 1][j] - pref[st - 1][k]); }else res = max(res, calc(calc, st - 1, k, i)); } return memo[{st, i, j}] = res; }; ll ans = 0; for(auto [i, _] : s[n - 2]){ for(auto [j, __] : s[n - 1]){ ans = max(ans, calc(calc, n - 1, i, j)); } } return ans; }
#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...