Submission #749546

#TimeUsernameProblemLanguageResultExecution timeMemory
749546farhan132Catfish Farm (IOI22_fish)C++17
0 / 100
782 ms148640 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; const ll INF = (ll)1e18; #define mem(a , b) memset(a, b ,sizeof(a)) const ll N = 3005; ll dp[2][2][2][N], pref[2][2][2][N], suf[2][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; mem(dp[row], 0); mem(pref, 0); mem(suf, 0); ll ans = 0; for(ll i = 0; i < n; i++){ row ^= 1; // 0 -> i-1 > i, i > i+1 // 1 -> i-1 < i, i < i+1 // 0 -> sz[i-1] < sz[i], sz[i] < sz[i+1] // 1 -> sz[i-1] > sz[i], sz[i] > sz[i+1] for(ll j = 0; j < n; j++){ for(ll c = 0; c < 2; c++) dp[row][c][0][j] = dp[row][c][1][j] = -INF; } for(ll l = 0; l < 2; l++){ for(ll d1 = 0; d1 < 2; d1++){ for(ll r = 0; r < 2; r++){ for(ll d2 = 0; d2 < 2; d2++){ if(!l && r) continue; for(ll j = 0; j < n; j++){ ll V = 0; if(l == 0 && d1){ V = suf[1-row][l][d1][j] - a[i][j]; }else{ V = (j > 0 ? pref[1-row][l][d1][j - 1] : 0); } if(l == 1 && !d1){ V = pref[1-row][l][d1][j] + (i > 0 ? a[i - 1][j] : 0); }else{ V = (j + 1 < n ? suf[1-row][l][d1][j] : 0); } if(r == 0 && d2){ V += a[i + 1][j]; } if(r == 1 && !d2){ V -= a[i][j]; } dp[row][r][d2][j] = max(dp[row][r][d2][j], V); ans = max(ans, V); } } } } } // cout << i << ' ' << ans << '\n'; for(ll c = 0; c < 2; c++){ for(ll d = 0; d < 2; d++){ for(ll j = n - 1; j >= 0; j--){ suf[row][c][d][j] = max(suf[row][c][d][j + 1], dp[row][c][d][j]); } for(ll j = 0; j < n; j++){ pref[row][c][d][j] = max(dp[row][c][d][j], (j > 0 ? pref[row][c][d][j - 1]: -INF)); } } } } 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...