제출 #1339553

#제출 시각아이디문제언어결과실행 시간메모리
1339553hccoder축구 경기장 (IOI23_soccer)C++20
0 / 100
4593 ms3204 KiB
#include "bits/stdc++.h"
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
using namespace std;
using ll = long long;

int biggest_stadium(int n, vector<vector<int>> F){
    vector<vector<int>> p(n, vector<int>(n+1));
    for (int i = 0; i<n; i++){
        for (int j = 1; j<=n; j++){
            p[i][j] = p[i][j-1] + F[j-1][i];
        }
    }
    auto get = [&] (int i, int l, int r) -> int {
        return p[i][r+1]-p[i][l];
    };
    int res = 0;
    for (int i = 0; i<n; i++){
        for (int m = 0; m<n; m++){
            if (F[m][i]) continue;
            int L = m, R = m;
            for (int z = m-1; z>=0; z--){
                if (!F[z][i]) L--;
                else break;
            }
            for (int z = m+1; z<n; z++){
                if (!F[z][i]) R++;
                else break;
            }
            int x = L, y = R;
            int cur = R-L+1;
            for (int j = i+1; j<n; j++){
                if (F[m][j]) break;
                int l = m, r = m;
                for (int z = m-1; z>=L; z--){
                    if (!F[z][j]) l--;
                    else break;
                }
                for (int z = m+1; z<=R; z++){
                    if (!F[z][j]) r++;
                    else break;
                }
                L = l;
                R = r;
                cur += (R-L+1);
            }
            L = x, R = y;
            for (int j = i-1; j>=0; j--){
                if (F[m][j]) break;
                int l = m, r = m;
                for (int z = m-1; z>=L; z--){
                    if (!F[z][j]) l--;
                    else break;
                }
                for (int z = m+1; z<=R; z++){
                    if (!F[z][j]) r++;
                    else break;
                }
                L = l;
                R = r;
                cur += (R-L+1);
            }
            res = max(res, cur);
        }
    }
    return res;
}

// int main(){
//     int r = biggest_stadium(3, {{1, 0, 0}, {0, 0, 1}, {0, 0, 0}});
//     cout<<r;
// }
#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...