Submission #1241669

#TimeUsernameProblemLanguageResultExecution timeMemory
1241669GabrielSoccer Stadium (IOI23_soccer)C++20
25 / 100
204 ms31912 KiB
#include "soccer.h"
#include "bits/stdc++.h"
using namespace std;
int biggest_stadium(int n, vector< vector<int> > fulbo){
    int r = 0;
    vector< pair<int, int> > Pares;
    for(int i = 0; i < n; i++){
        int Componentes = 0;
        int m = -2, M = -2;
        for(int j = 0; j < n; j++){
            r += 1 - fulbo[i][j];
            if(fulbo[i][j] == 0 and (j == 0 or fulbo[i][j - 1] == 1)) m = j;
            if(fulbo[i][j] == 0 and (j == n - 1 or fulbo[i][j + 1] == 1)) M = 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(m != -2 and M != -2) Pares.push_back({m, M});
        if(Componentes > 1){
            //cerr<<"No conexo.\n";
            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){
            //cerr<<"No conexo.\n";
            return 0;
        }
    }
    for(int i = 0; i < Pares.size() - 1; i++){
        for(int j = i + 1; j < Pares.size(); j++){
            if(Pares[i].first < Pares[j].first and Pares[i].second < Pares[j].second) return 0;
            if(Pares[j].first < Pares[i].first and Pares[j].second < Pares[i].second) 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...