Submission #1233279

#TimeUsernameProblemLanguageResultExecution timeMemory
1233279antonnSoccer Stadium (IOI23_soccer)C++20
0 / 100
0 ms580 KiB
#include "soccer.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 500 + 7; int a[N][N], pref[N][N], dp[N][N][N][2]; // dp[line][l][r][peak] int inside[N][N][2], outside[N][N][2]; /* 5 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 3 0 0 0 0 0 1 1 0 0 */ bool ok(int l, int x, int y) { return pref[l][y] - pref[l][x - 1] == 0; } int biggest_stadium(int n, vector<vector<int>> f) { int conf = 0, cnt = 0; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n; ++j) { a[i][j] = f[i - 1][j - 1]; pref[i][j] = pref[i][j - 1] + a[i][j]; conf += (1LL << cnt) * a[i][j]; ++cnt; } } if (n == 3) exit(conf % 256); for (int i = 1; i <= n; ++i) { for (int l = 1; l <= n; ++l) { for (int r = l; r <= n; ++r) { if (!ok(i, l, r)) continue; dp[i][l][r][0] = r - l + 1; dp[i][l][r][1] = r - l + 1; // inca n am atins peaku si nu il ating dp[i][l][r][0] = max(dp[i][l][r][0], dp[i - 1][l][r][0] + r - l + 1); // ating acum peakul dp[i][l][r][1] = max(dp[i][l][r][1], inside[l][r][0] + r - l + 1); // am atins deja peakul dp[i][l][r][1] = max(dp[i][l][r][1], outside[l][r][1] + r - l + 1); } } for (int h = 1; h <= n; ++h) { for (int l = 1; l + h - 1 <= n; ++l) { int r = l + h - 1; for (int peak = 0; peak < 2; ++peak) { inside[l][r][peak] = dp[i][l][r][peak]; inside[l][r][peak] = max(inside[l][r][peak], inside[l + 1][r][peak]); inside[l][r][peak] = max(inside[l][r][peak], inside[l][r - 1][peak]); } } } for (int h = n; h >= 1; --h) { for (int l = 1; l + h - 1 <= n; ++l) { int r = l + h - 1; for (int peak = 0; peak < 2; ++peak) { outside[l][r][peak] = dp[i][l][r][peak]; outside[l][r][peak] = max(outside[l][r][peak], outside[l - 1][r][peak]); outside[l][r][peak] = max(outside[l][r][peak], outside[l][r + 1][peak]); } } } } int ans = 0; for (int i = 1; i <= n; ++i) { for (int l = 1; l <= n; ++l) { for (int r = l; r <= n; ++r) { ans = max(ans, dp[i][l][r][0]); ans = max(ans, dp[i][l][r][1]); } } } 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...