Submission #749501

#TimeUsernameProblemLanguageResultExecution timeMemory
749501farhan132Catfish Farm (IOI22_fish)C++17
0 / 100
803 ms149356 KiB
#include "fish.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef double dd; typedef pair<ll , ll> ii; typedef tuple < ll, ll, ll > tp; #define mem(a , b) memset(a, b ,sizeof(a)) const ll N = 3005; ll dp[2][2][N], pref[2][2][N]; ll a[N][N]; ll n; long long max_weights(int _n, int m, std::vector<int> X, std::vector<int> Y, std::vector<int> W) { n = _n; mem(a, 0); mem(dp, 0); mem(pref, 0); for(ll i = 0; i < m; i++){ a[X[i]][Y[i]] = W[i]; } for(ll i = 0; i < n; i++){ for(ll j = 1; j <= n; j++){ a[i][j] += a[i][j - 1]; } } ll row = 0; for(ll i = 0; i <= n; i++){ mem(dp[row], 0); mem(pref[row], 0); } ll ans = 0; for(ll i = 0; i < n; i++){ row ^= 1; mem(dp[row], 0); mem(pref[row], 0); // 0 -> i-1 > i, i > i+1 // 1 -> i-1 < i, i < i+1 for(ll l = 0; l < 2; l++){ for(ll r = 0; r < 2; r++){ if(!l && r) continue; for(ll j = 0; j < n; j++){ ll V = 0; if(l == 0){ V = pref[1-row][l][j] - a[i][j]; }else{ V = pref[1-row][l][j] + (i > 0 ? a[i - 1][j] : 0); } if(r == 0){ V += a[i + 1][j]; }else{ V -= a[i][j]; } dp[row][r][j] = max(dp[row][r][j], V); ans = max(ans, V); } } } for(ll c = 0; c < 2; c++){ for(ll j = n - 1; j >= 0; j--){ pref[row][c][j] = max(pref[row][c][j + 1], dp[row][c][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...