Submission #1231806

#TimeUsernameProblemLanguageResultExecution timeMemory
1231806RakhimovAmirCatfish Farm (IOI22_fish)C++17
0 / 100
17 ms4436 KiB
#include "fish.h" #include <bits/stdc++.h> using namespace std; using ll = long long; const ll N = 301; ll d[N][N][2], f[N][N], mxs[N][N], mxp[N][N], suff[N][N], mxd[N][N], pref[N][N], mxdd[N]; long long max_weights(int N, int M, vector<int> X, vector<int> Y, vector<int> W) { ll res = 0; for (ll i = 0; i < N; i++) { for (ll j = 0; j < N; j++) { d[i][j][0] = d[i][j][1] = f[i][j] = 0; } } for (ll i = 0; i < M; i++) { f[X[i]][Y[i]] = W[i]; } for (ll j = 0; j < N; j++) { pref[0][j] = f[0][j]; if (j) pref[0][j] += pref[0][j - 1]; mxp[0][j] = pref[0][j]; if (j) mxp[0][j] = max(mxp[0][j - 1], mxp[0][j]); } for (ll i = 1; i < N; i++) { for (ll j = 0; j < N; j++) { pref[i][j] = f[i][j]; if (j) pref[i][j] += pref[i][j - 1]; mxp[i][j] = pref[i][j] + max(d[i - 1][j][0], d[i - 1][j][1]); if (j) mxp[i][j] = max(mxp[i][j - 1], mxp[i][j]); } for (ll j = N - 1; j >= 0; j--) { suff[i][j] = (j == N - 1 ? 0 : suff[i][j + 1]) + f[i][j]; } for (ll j = 0; j < N; j++) { d[i][j][0] = max(d[i][j][0], mxs[i - 1][j] - suff[i - 1][j + 1]); if (i > 1) d[i][j][0] = max(d[i][j][0], mxd[i - 2][j] + pref[i - 1][j]); d[i][j][0] = max(d[i][j][0], mxdd[i - 1]); d[i][j][1] = max(d[i][j][1], mxp[i][N - 1] - pref[i][j]); // cout << d[i][j][0] << " " << d[i][j][1] << "\n"; res = max({res, d[i][j][0], d[i][j][1]}); } for (ll j = N - 1; j >= 0; j--) { mxs[i][j] = d[i][j][0] + suff[i][j + 1]; if (j < N - 1) mxs[i][j] = max(mxs[i][j + 1], mxs[i][j]); } for (ll j = 0; j < N; j++) { mxd[i][j] = max(d[i][j][0], d[i][j][1]); if (j) mxd[i][j] = max(mxd[i][j - 1], mxd[i][j]); } for (ll j = 0; j < N; j++) { mxdd[i] = max(mxdd[i], max(d[i - 1][j][0], d[i - 1][j][1]) + pref[i][j]); } } 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...