Submission #1213063

#TimeUsernameProblemLanguageResultExecution timeMemory
1213063AvianshSoccer Stadium (IOI23_soccer)C++20
8 / 100
4595 ms412 KiB
#include "soccer.h"
#include <bits/stdc++.h>

using namespace std;

int biggest_stadium(int n, vector<vector<int>> F) {
    int ans = 0;
    for(int mask = 1;mask<(1<<(n*n));mask++){
        vector<vector<bool>>sel(n,vector<bool>(n));
        int ind = 0;
        for(int i = 0;i<n;i++){
            for(int j = 0;j<n;j++){
                if((1<<ind)&mask){
                    sel[i][j]=1;
                }
                ind++;
            }
        }

        assert(ind==n*n);
        bool val = 1;

        for(int i = 0;i<n;i++){
            for(int j = 0;j<n;j++){
                if(sel[i][j]&&F[i][j]){
                    val=0;
                }
            }
        }

        if(!val)
            continue;
        for(int si = 0;si<n;si++){
            for(int sj = 0;sj<n;sj++){
                if(!sel[si][sj])
                    continue;
                for(int ei = 0;ei<n;ei++){
                    for(int ej = 0;ej<n;ej++){
                        if(si==ei&&sj==ej)
                            continue;
                        if(!sel[ei][ej]){
                            continue;
                        }
                        bool cas1 = 1;
                        bool cas2 = 1;
                        for(int i = min(si,ei);i<=max(si,ei);i++){
                            if(!sel[i][ej]){
                                cas1=0;
                            }
                            if(!sel[i][sj]){
                                cas2=0;
                            }
                        }
                        for(int i = min(sj,ej);i<=max(sj,ej);i++){
                            if(!sel[si][i]){
                                cas1=0;
                            }
                            if(!sel[ei][i]){
                                cas2=0;
                            }
                        }
                        if((!cas1)&&(!cas2)){
                            val=0;
                        }
                    }
                }
            }
        }

        if(val){
            ans=max(ans,__builtin_popcount(mask));
        }
    }
    return ans;
}
#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...