제출 #1358033

#제출 시각아이디문제언어결과실행 시간메모리
1358033maya_s축구 경기장 (IOI23_soccer)C++20
12 / 100
4594 ms2372 KiB
#include "soccer.h"
#include<bits/stdc++.h>
#pragma GCC("o3, unroll-loops")
using namespace std;
typedef int ll;

inline bool row(ll a, ll b, ll r, vector<vector<ll>> &v){
    if(a <= b) for(ll i = a; i <= b; i++) if(v[r][i] != 2) return 0;
    else for(ll i = b; i <= a; i++) if(v[r][i] != 2) return 0;
    return 1;
}

inline bool col(ll a, ll b, ll c, vector<vector<ll>> &v){
    if(a <= b) for(ll i = a; i <= b; i++) if(v[i][c] != 2) return 0;
    else for(ll i = b; i <= a; i++) if(v[i][c] != 2) return 0;
    return 1;
}

inline bool are_connected(ll i, ll j, ll a, ll b, vector<vector<ll>> &v){
    return (row(j, b, i, v) && col(i, a, b, v)) || (col(i, a, j, v) && row(j, b, a, v));
}

inline ll ok(ll n, vector<vector<ll>> &v){
    for(ll i = 0; i < n; i++) for(ll j = 0; j < n; j++) if(v[i][j] == 2){
        for(ll a = 0; a < n; a++) for(ll b = 0; b < n; b++) if(v[a][b] == 2){
            if(!are_connected(i, j, a, b, v)) return 0;
        }
    }
    ll cnt = 0;
    for(ll i = 0; i < n; i++) for(ll j = 0; j < n; j++) if(v[i][j] == 2) cnt++;
    return cnt;
}

int biggest_stadium(int n, vector<vector<int>> f)
{
    for(ll i = 0; i < n; i++) for(ll j = 0; j < n; j++) if(f[i][j] == 0) f[i][j] = 2;
    return ok(n, f);
}
#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...