Submission #841078

#TimeUsernameProblemLanguageResultExecution timeMemory
841078LucppSoccer Stadium (IOI23_soccer)C++17
64 / 100
4567 ms63336 KiB
#include <bits/stdc++.h> #include "soccer.h" using namespace std; int biggest_stadium(int N, vector<vector<int>> F){ int ans = 0; for(int k = 0; k < N; k++){ vector<int> l(N, k), r(N, k); for(int i = 0; i < N; i++){ if(F[i][k]) continue; while(l[i] > 0 && F[i][l[i]-1] == 0) l[i]--; while(r[i] < N && F[i][r[i]] == 0) r[i]++; } vector<vector<int>> score(N, vector<int>(N)); for(int i = 0; i < N; i++){ int mal = 0, mir = N; for(int j = i; j < N; j++){ mal = max(mal, l[j]); mir = min(mir, r[j]); score[i][j] = max(0, mir-mal); } } vector<vector<int>> dp(N, vector<int>(N)); for(int d = N-1; d >= 0; d--){ for(int i = 0; i+d < N; i++){ int j = i+d; int res = 0; if(i > 0) res = dp[i-1][j] + score[i-1][j]; if(j < N-1) res = max(res, dp[i][j+1] + score[i][j+1]); dp[i][j] = res; } } for(int i = 0; i < N; i++) ans = max(ans, dp[i][i]+score[i][i]); } 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...