제출 #1035753

#제출 시각아이디문제언어결과실행 시간메모리
1035753Andrey메기 농장 (IOI22_fish)C++17
35 / 100
1037 ms200044 KiB
#include "fish.h" #include<bits/stdc++.h> using namespace std; long long haha[5001][5001]; long long dp[5001][5001][3]; long long max_weights(int n, int m, vector<int> x, vector<int> y, vector<int> w) { for(long long i = 0; i <= n; i++) { for(long long j = 0; j <= n; j++) { haha[i][j] = 0; } } for(long long i = 0; i < m; i++) { haha[x[i]+1][y[i]+1] = w[i]; } for(long long i = 0; i <= n; i++) { dp[0][i][0] = -LLONG_MAX/2; dp[0][i][1] = -LLONG_MAX/2; dp[0][i][2] = -LLONG_MAX/2; } dp[0][0][0] = 0; for(long long i = 1; i <= n; i++) { long long br = 0; for(int j = 0; j <= n; j++) { dp[i][j][0] = -LLONG_MAX/2; dp[i][j][1] = -LLONG_MAX/2; dp[i][j][2] = -LLONG_MAX/2; } for(long long j = 0; j <= n; j++) { br+=haha[i][j]; long long sb1 = br,sb2 = 0; dp[i][j][1] = max(dp[i][j][1],max(dp[i-1][j][0],dp[i-1][j][2])+br); for(int k = 0; k <= n; k++) { if(k > j) { sb1+=haha[i-1][k]; sb2+=haha[i-1][k]; } else { sb1-=haha[i][k]; } if(k <= j) { dp[i][k][2] = max(dp[i][k][2],max(dp[i-1][j][2],dp[i-1][j][0])+sb1); } else { dp[i][k][0] = max(dp[i][k][0],dp[i-1][j][0]+sb1); } dp[i][k][0] = max(dp[i][k][0],dp[i-1][j][1]+sb2); } } } long long ans = 0; for(long long i = 0; i <= n; i++) { ans = max(ans,max(dp[n][i][0],dp[n][i][1])); ans = max(ans,dp[n][i][2]); } 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...