Submission #979971

#TimeUsernameProblemLanguageResultExecution timeMemory
979971vjudge1Soccer Stadium (IOI23_soccer)C++17
16 / 100
4571 ms31768 KiB
#include "soccer.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vi = vector <int>;
using vvi = vector <vi>;
using vll = vector <ll>;

int biggest_stadium (int n, vvi f) {
    ll all = 0;
    for (ll i = 0; i < n; i++) {
        for (ll j = 0; j < n; j++) {
            all += f[i][j] == 0;
        }
    }
    for (ll i = 0; i < n; i++) {
        for (ll j = 0; j < n; j++) {
            if (f[i][j]) continue;
            ll il = i, ir = i;
            ll jl = j, jr = j;
            while (il > 0 && !f[il-1][j]) il--;
            while (ir < n-1 && !f[ir+1][j]) ir++;
            while (jl > 0 && !f[i][jl-1]) jl--;
            while (jr < n-1 && !f[i][jr+1]) jr++;
            ll cou = 0;
            for (ll ii = 0; ii < il; ii++) {
                for (ll jj = 0; jj < jl; jj++) {
                    cou += f[ii][jj] == 0;
                }
            }
            for (ll ii = ir+1; ii < n; ii++) {
                for (ll jj = 0; jj < jl; jj++) {
                    cou += f[ii][jj] == 0;
                }
            }
            for (ll ii = 0; ii < il; ii++) {
                for (ll jj = jr+1; jj < n; jj++) {
                    cou += f[ii][jj] == 0;
                }
            }
            for (ll ii = ir+1; ii < n; ii++) {
                for (ll jj = jr+1; jj < n; jj++) {
                    cou += f[ii][jj] == 0;
                }
            }
            if (cou != 0) return 0;
        }
    }
    for (ll i = 0; i < n; i++) {
        ll j = 0;
        for (; j < n; j++) if (!f[i][j]) break;
        for (; j < n; j++) if (f[i][j]) break;
        for (; j < n; j++) if (!f[i][j]) break;
        if (j != n) return 0;
    }
    for (ll i = 0; i < n; i++) {
        for (ll j = 0; j < i; j++) {
            swap(f[i][j], f[j][i]);
        }
    }
    for (ll i = 0; i < n; i++) {
        ll j = 0;
        for (; j < n; j++) if (!f[i][j]) break;
        for (; j < n; j++) if (f[i][j]) break;
        for (; j < n; j++) if (!f[i][j]) break;
        if (j != n) return 0;
    }
    return all;
}
#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...