Submission #1358030

#TimeUsernameProblemLanguageResultExecution timeMemory
1358030maya_sSoccer Stadium (IOI23_soccer)C++20
12 / 100
4594 ms2372 KiB
#include "soccer.h"
#include<bits/stdc++.h>
using namespace std;
typedef int ll;

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;
}

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;
}

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));
}

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;
}

ll rec(ll i, ll j, ll n, vector<vector<ll>> &v){
    if(j == n) i++, j = 0;
    if(i == n) return ok(n, v);
    ll ans = rec(i, j+1, n, v);
    if(v[i][j] == 0){
        v[i][j] = 2;
        ans = max(ans, rec(i, j+1, n, v));
        v[i][j] = 0;
    }
    return ans;
}

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...