Submission #1213062

#TimeUsernameProblemLanguageResultExecution timeMemory
1213062AvianshSoccer Stadium (IOI23_soccer)C++20
0 / 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;
                }
            }
        }

        for(int i = 0;i<n;i++){

            bool start = 0;
            bool en = 0;
            for(int j = 0;j<n;j++){
                if(sel[i][j]){
                    if(!start){
                        start=1;
                    }
                    else if(en){
                        val=0;
                    }
                }
                else{
                    if(start){
                        en=1;
                    }
                }
            }
        }
        bool shrink = 0;
        int s = -1;
        int e = -1;

        for(int i = 0;i<n;i++){
            int cs = -1;
            int ce = -1;
            for(int j = 0;j<n;j++){
                if(sel[i][j]){
                    if(cs==-1){
                        cs=j;
                        ce=j;
                    }
                    else{
                        ce=j;
                    }
                }
            }
            if(s==-1){
                s=cs;
                e=ce;
            }
            else{
                if(shrink){
                    if(cs<s||ce>e){
                        val=0;
                    }
                    else{
                        s=cs;
                        e=ce;
                    }
                }
                else{
                    if(cs<s||ce>e){
                        if(cs<=s&&ce>=e){
                            s=cs;
                            e=ce;
                        }
                        else{
                            val=0;
                        }
                    }
                    else{
                        shrink=1;
                    }
                    s=cs;
                    e=ce;
                }
            }
        }

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