Submission #1358028

#TimeUsernameProblemLanguageResultExecution timeMemory
1358028maya_sSoccer Stadium (IOI23_soccer)C++20
8 / 100
4593 ms408 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)
{
    return rec(0, 0, 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...