Submission #1241774

#TimeUsernameProblemLanguageResultExecution timeMemory
1241774BoasSoccer Stadium (IOI23_soccer)C++17
18 / 100
4595 ms3400 KiB
#include "soccer.h" #include <bits/stdc++.h> using namespace std; typedef vector<int> vi; typedef set<int> si; typedef int64_t i64; typedef vector<i64> vi64; typedef pair<i64, int> ii; typedef vector<ii> vii; typedef vector<vii> vvii; typedef vector<bool> vb; typedef vector<vb> vvb; typedef vector<vi> vvi; #define pb push_back #define sz(x) (int)(x).size() #define loop(n, i) for (int i = 0; i < (n); i++) #define ALL(x) begin(x), end(x) int biggest_stadium(int N, std::vector<std::vector<int>> F) { auto regular = [&](vvi input) -> bool { loop(N, i1) loop(N, j1) loop(N, i2) loop(N, j2) { if (input[i1][j1] || input[i2][j2]) continue; bool r1 = true, r2 = 1; for (int i3 = min(i1, i2); i3 <= max(i1, i2); i3++) { if (input[i3][j1]) r1 = 0; if (input[i3][j2]) r2 = 0; } for (int j3 = min(j1, j2); j3 <= max(j1, j2); j3++) { if (input[i1][j3]) r2 = 0; if (input[i2][j3]) r1 = 0; } if (!r1 && !r2) return 0; } return 1; }; if (N <= 4) { int ans = 0; for (unsigned m = 0; m < (1 << (N * N)); m++) { vvi uitVeld(F); int cnt = 0; loop(N, i) loop(N, j) { int p = N * i + j; if ((1 << p) & m) uitVeld[i][j] = 1; if (!uitVeld[i][j]) cnt++; } if (regular(uitVeld)) ans = max(ans, cnt); } return ans; } int cnt = 0; loop(N, i) loop(N, j) if (F[i][j] == 0) cnt++; return regular(F) * cnt; }
#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...