Submission #1206945

#TimeUsernameProblemLanguageResultExecution timeMemory
1206945Pekiban축구 경기장 (IOI23_soccer)C++20
29.50 / 100
267 ms31892 KiB
#include "soccer.h" #include <bits/stdc++.h> using namespace std; #define pb push_back 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; } vector<array<int, 2>> v; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (!F[i][j] && (min({i, n-i-1, j, n-j-1}) == 0 || (F[i+1][j] || F[i-1][j] || F[i][j-1] || F[i][j+1]))) v.pb({i, j}); } } for (auto [x1, y1] : v) { // cout << x1 << ' ' << y1 << endl; for (auto [x2, y2] : v) { if (F[x1][y2] && F[x2][y1]) 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...