Submission #1227110

#TimeUsernameProblemLanguageResultExecution timeMemory
1227110Gabriel축구 경기장 (IOI23_soccer)C++20
1.50 / 100
191 ms31772 KiB
#include "soccer.h"
#include "bits/stdc++.h"
using namespace std;
int biggest_stadium(int n, vector< vector<int> > fulbo){
    vector< vector<int> > Distancias_arriba, Distancias_abajo, Distancias_izquierda, Distancias_derecha;
    pair<int, int> Esquina_0_0, Esquina_0_n, Esquina_n_0, Esquina_n_n;
    if(fulbo[0][0] == -0) Esquina_0_0 = {-1, -1};
    else {
        int i = 0;
        while(i < n and fulbo[i][0] == 1) i++;
        i--;
        int j = 0;
        while(j < n and fulbo[0][j] == 1) j++;
        j--;
        Esquina_0_0 = {i, j};
    }
    if(fulbo[0][n - 1] == -0) Esquina_0_n = {-1, n};
    else {
        int i = 0;
        while(i < n and fulbo[i][n - 1] == 1) i++;
        i--;
        int j = n - 1;
        while(j > -1 and fulbo[0][j] == 1) j--;
        j++;
        Esquina_0_n = {i, j};
    }
    if(fulbo[n - 1][0] == -0) Esquina_n_0 = {n, -1};
    else {
        int i = n - 1;
        while(i > -1 and fulbo[i][0] == 1) i--;
        i++;
        int j = 0;
        while(j < n and fulbo[n - 1][j] == 1) j++;
        j--;
        Esquina_n_0 = {i, j};
    }
    if(fulbo[n - 1][n - 1] == -0) Esquina_n_n = {n, n};
    else {
        int i = n - 1;
        while(i > -1 and fulbo[i][n - 1] == 1) i--;
        i++;
        int j = n - 1;
        while(j > -1 and fulbo[n - 1][j] == 1) j--;
        j++;
        Esquina_n_n = {i, j};
    }
    int r = 0;
    /*cerr<<"Esquina superior izquierda. "<<Esquina_0_0.first<<" "<<Esquina_0_0.second<<"\n";
    cerr<<"Esquina superior derecha. "<<Esquina_0_n.first<<" "<<Esquina_0_n.second<<"\n";
    cerr<<"Esquina inferior izquierda. "<<Esquina_n_0.first<<" "<<Esquina_n_0.second<<"\n";
    cerr<<"Esquina inferior derecha. "<<Esquina_n_n.first<<" "<<Esquina_n_n.second<<"\n";*/
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            //cerr<<fulbo[i][j]<<" ";
            int _Qu__est__pasando_ = fulbo[i][j];
            if(((i > Esquina_0_0.first or j > Esquina_0_0.second) and (i > Esquina_0_n.first or j < Esquina_0_n.second) and (i < Esquina_n_0.first or j > Esquina_n_0.second) and (i < Esquina_n_n.first or j < Esquina_n_n.second)) and _Qu__est__pasando_ == 1){
                //cerr<<"Afuera y 1. "<<i<<" "<<j<<" "<<fulbo[i][j]<<"\n";
                return 0;
            }
            /*if(((i <= Esquina_0_0.first and j <= Esquina_0_0.second) or (i <= Esquina_0_n.first and j >= Esquina_0_n.second) or (i >= Esquina_n_0.first and j <= Esquina_n_0.second) or (i >= Esquina_n_n.first and j >= Esquina_n_n.second)) and _Qu__est__pasando_ == 0){
                cerr<<"Adentro y 0. "<<i<<" "<<j<<" "<<fulbo[i][j]<<"\n";
                return 0;
            }*/
            if(fulbo[i][j] == 0) r++;
        }
        //cerr<<"\n";
    }
    if(Esquina_0_0.first >= Esquina_n_n.first - 1 and Esquina_0_0.first < n - 1 and Esquina_n_n.first > 0) return 0;
    if(Esquina_0_0.second >= Esquina_n_n.second - 1 and Esquina_0_0.second < n - 1 and Esquina_n_n.second > 0) return 0;
    if(Esquina_n_0.first <= Esquina_0_n.first + 1 and Esquina_n_0.first > 0 and Esquina_0_n.first < n - 1) return 0;
    if(Esquina_n_0.second >= Esquina_0_n.second - 1 and Esquina_n_0.second < n - 1 and Esquina_0_n.second > 0) return 0;
    for(int i = 0; i < n; i++){
        int Componentes = 0;
        for(int j = 0; j < n; j++){
            if((j == 0 and fulbo[i][j] == 0) or (j > 0 and fulbo[i][j - 1] == 1 and fulbo[i][j] == 0)) Componentes++;
        }
        if(Componentes > 1) return 0;
    }
    for(int i = 0; i < n; i++){
        int Componentes = 0;
        for(int j = 0; j < n; j++){
            if((j == 0 and fulbo[j][i] == 0) or (j > 0 and fulbo[j - 1][i] == 1 and fulbo[j][i] == 0)) Componentes++;
        }
        if(Componentes > 1) return 0;
    }
    return r;
}
#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...