Submission #973407

#TimeUsernameProblemLanguageResultExecution timeMemory
973407irmuunSoccer Stadium (IOI23_soccer)C++17
29.50 / 100
328 ms40072 KiB
#include<bits/stdc++.h>
#include "soccer.h"

using namespace std;

#define ll long long
#define pb push_back
#define ff first
#define ss second
#define all(s) s.begin(),s.end()
#define rall(s) s.rbegin(),s.rend()

int biggest_stadium(int n,vector<vector<int>>f){
    int total=0,x,y;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(f[i][j]==1){
                total++;
                x=i;
                y=j;
            }
        }
    }
    if(total<=1){
        if(total==0){
            return n*n;
        }
        else{
            if(x==0||y==0||x==n-1||y==n-1){
                return n*n-1;
            }
            x++;
            y++;
            x=min(x,n+1-x);
            y=min(y,n+1-y);
            return n*n-x*y;
        }
    }
    bool can=true;
    vector<pair<int,int>>v,u;
    for(int i=0;i<n;i++){
        int l=-1,r=-1;
        for(int j=0;j<n;j++){
            if(f[i][j]==0){
                if(l==-1) l=j;
                r=j;
            }
        }
        if(l==-1) continue;
        for(int j=l;j<=r;j++){
            if(f[i][j]==1){
                can=false;
            }
        }
        v.pb({l,r});
    }
    for(int j=0;j<n;j++){
        int l=-1,r=-1;
        for(int i=0;i<n;i++){
            if(f[i][j]==0){
                if(l==-1) l=i;
                r=i;
            }
        }
        if(l==-1) continue;
        for(int i=l;i<=r;i++){
            if(f[i][j]==1){
                can=false;
            }
        }
        u.pb({l,r});
    }
    if(!v.empty()){
        for(auto [l1,r1]:v){
            for(auto [l2,r2]:v){
                if(l1<=l2&&r2<=r1) continue;
                if(l2<=l1&&r1<=r2) continue;
                can=false;
            }
        }
    }
    if(!u.empty()){
        for(auto [l1,r1]:u){
            for(auto [l2,r2]:u){
                if(l1<=l2&&r2<=r1) continue;
                if(l2<=l1&&r1<=r2) continue;
                can=false;
            }
        }
    }
    if(can){
        return n*n-total;
    }
    return 0;
}

Compilation message (stderr)

soccer.cpp: In function 'int biggest_stadium(int, std::vector<std::vector<int> >)':
soccer.cpp:29:34: warning: 'y' may be used uninitialized in this function [-Wmaybe-uninitialized]
   29 |             if(x==0||y==0||x==n-1||y==n-1){
      |                ~~~~~~~~~~~~~~~~~~^~~~~~~~
soccer.cpp:29:26: warning: 'x' may be used uninitialized in this function [-Wmaybe-uninitialized]
   29 |             if(x==0||y==0||x==n-1||y==n-1){
      |                ~~~~~~~~~~^~~~~~~~
#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...