제출 #1206921

#제출 시각아이디문제언어결과실행 시간메모리
1206921Pekiban축구 경기장 (IOI23_soccer)C++20
6 / 100
187 ms31772 KiB
#include "soccer.h" #include <bits/stdc++.h> using namespace std; int biggest_stadium(int n, vector<vector<int>> F) { int x = -1, y = -1, c = 0; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (F[i][j]) x = i, y = j, ++c; } } if (c == 1) { if (x == -1 && y == -1) return n*n; return n*n - min(x+1, n-x) * min(y+1, n-y); } int mn[n], mx[n]; fill(mn, mn+n, 1e9); fill(mx, mx+n, -1); for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (!F[i][j]) mn[i] = min(mn[i], j), mx[i] = max(mx[i], j); } } for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (F[i][j] && mn[i] <= j && j <= mx[i]) return 1; } } for (int i = 0; i < n-1; ++i) { if (!(mn[i] <= mn[i+1] && mx[i+1] <= mx[i]) && !(mn[i+1] <= mn[i] && mx[i] <= mx[i+1])) return 1; } fill(mn, mn+n, 1e9); fill(mx, mx+n, -1); for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (!F[j][i]) mn[i] = min(mn[i], j), mx[i] = max(mx[i], j); } } for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (F[j][i] && mn[i] <= j && j <= mx[i]) return 1; } } for (int i = 0; i < n-1; ++i) { if (!(mn[i] <= mn[i+1] && mx[i+1] <= mx[i]) && !(mn[i+1] <= mn[i] && mx[i] <= mx[i+1])) return 1; } return n*n - c; }
#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...