제출 #1206534

#제출 시각아이디문제언어결과실행 시간메모리
1206534hyakupSoccer Stadium (IOI23_soccer)C++20
25 / 100
221 ms31896 KiB
#include "soccer.h" #include <bits/stdc++.h> using namespace std; int check_all( vector<vector<int>> &mat ){ int n = mat.size(); vector<int> l(n, n), r(n, -1); int tot = 0; for( int i = 0; i < n; i++ ) for( int j = 0; j < n; j++ ) if( mat[i][j] == 0 ){ tot++; l[i] = min( l[i], j ); r[i] = max( r[i], j ); } auto contains = [&]( int a, int b ){ return l[a] <= l[b] && r[b] <= r[a]; }; int cont = 0; for( int i = 0; i < n; i++ ) if( l[i] != n ){ cont += (r[i] - l[i] + 1); for( int j = i + 1; j < n; j++ ) if( l[j] != n && !contains( i, j ) && !contains( j, i ) ) return 0; } if( tot < cont ) return 0; fill( l.begin(), l.end(), n ); fill( r.begin(), r.end(), -1 ); for( int i = 0; i < n; i++ ) for( int j = 0; j < n; j++ ) if( mat[j][i] == 0 ){ l[i] = min( l[i], j ); r[i] = max( r[i], j ); } cont = 0; for( int i = 0; i < n; i++ ) if( l[i] != n ){ cont += (r[i] - l[i] + 1); for( int j = i + 1; j < n; j++ ) if( l[j] != n && !contains( i, j ) && !contains( j, i ) ) return 0; } if( tot < cont ) return 0; return tot; } int biggest_stadium(int n, vector<vector<int>> mat ){ return check_all(mat); }
#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...