제출 #993521

#제출 시각아이디문제언어결과실행 시간메모리
993521Clan328메기 농장 (IOI22_fish)C++17
23 / 100
1073 ms2097152 KiB
#include "fish.h" #include <bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define nL '\n' #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() typedef long long ll; typedef long double ld; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> pii; typedef vector<pii> vpii; typedef vector<ll> vl; typedef vector<vl> vvl; typedef pair<ll, ll> pll; typedef vector<pll> vpll; int ipow(int a, int n) { if (n == 0) return 1; int x = ipow(a, n/2); if (n % 2 == 0) return x*x; return x*x*a; } template <typename T> ostream& operator<<(ostream& stream, const vector<T>& v) { for (auto elem : v) stream << elem << " "; return stream; } template <typename T> istream& operator>>(istream& stream, vector<T>& v){ for(auto &elem : v) stream >> elem; return stream; } long long max_weights(int N, int M, vi X, vi Y, vi W) { ll maxY = 0; for (int i = 0; i < M; i++) maxY = max(maxY, (ll)Y[i]); maxY++; vvl mat(N, vl(maxY+1)); for (int i = 0; i < M; i++) mat[X[i]][Y[i]] = W[i]; vector<vvl> dp(N, vvl(maxY+1, vl(maxY+1))); ll _tmp1 = 0; for (int j = 0; j <= maxY; j++) { if (j > 0) _tmp1 += mat[0][j-1]; ll _tmp2 = 0; for (int k = 0; k <= maxY; k++) { if (k <= j) { if (k > 0) _tmp2 -= mat[0][k-1]; } else { if (k > 0) _tmp2 += mat[1][k-1]; } dp[1][j][k] = _tmp1+_tmp2; // cout << j << " " << k << " " << _tmp1+_tmp2 << nL; } } for (int i = 2; i < N; i++) { ll tmp1 = 0; for (int j = 0; j <= maxY; j++) { if (j > 0) tmp1 += mat[i-1][j-1]; ll tmp2 = 0; for (int k = 0; k <= maxY; k++) { if (k <= j) { if (k > 0) tmp2 -= mat[i-1][k-1]; } else { if (k > 0) tmp2 += mat[i][k-1]; } ll tmp3 = 0; for (int l = 0; l <= maxY;l++) { if (l > k && l <= j) { if (l > 0) tmp3 -= mat[i-1][l-1]; } dp[i][j][k] = max(dp[i][j][k], dp[i-1][k][l]+tmp1+tmp2+tmp3); } } } } long long res = 0; for (int i = 0; i <= maxY; i++) { for (int j = 0; j <= maxY; j++) res = max(res, dp[N-1][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...