제출 #1157817

#제출 시각아이디문제언어결과실행 시간메모리
1157817InvMOD메기 농장 (IOI22_fish)C++20
0 / 100
960 ms2162688 KiB
#include<bits/stdc++.h> #include "fish.h" using namespace std; #define fi first #define se second //#define int long long #define sz(v) (int)(v).size() #define all(v) (v).begin(), (v).end() using ll = long long; ll max_weights(int n, int m, vector<int> X, vector<int> Y, vector<int> W){ vector<vector<ll>> w(n + 1, vector<ll>(n + 1)); for(int i = 0; i < m; i++){ X[i] = X[i] + 1; Y[i] = Y[i] + 1; w[X[i]][Y[i]] = W[i]; } vector<vector<ll>> dp(n + 1, vector<ll>(n + 1, 0)); for(int i = 1; i <= n; i++){ for(int j = 0; j <= n; j++){ dp[i][0] = max(dp[i][0], dp[i - 1][j]); } ll sum = 0; for(int j = 1; j <= n; j++){ sum += w[i - 1][j]; int sub = 0; for(int p = 0; p < j; p++){ sub += w[i - 1][p]; dp[i][j] = max(dp[i][j], dp[i - 1][p] + (sum - sub)); } } } vector<vector<ll>> dp2(n + 1, vector<ll>(n + 1, 0)); for(int i = n - 1; i >= 1; i--){ for(int j = 0; j <= n; j++){ dp2[i][0] = max(dp2[i][0], dp2[i + 1][j]); } ll sum = 0; for(int j = 1; j <= n; j++){ sum += w[i + 1][j]; int sub = 0; for(int p = 0; p < j; p++){ sub += w[i + 1][p]; dp2[i][j] = max(dp2[i][j], dp2[i + 1][p] + (sum - sub)); } } } ll answer = 0; for(int i = 1; i <= n; i++){ for(int j = 0; j <= n; j++){ answer = max(answer, dp[i][j] + dp2[i][j]); } } return answer; }
#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...