제출 #1242267

#제출 시각아이디문제언어결과실행 시간메모리
1242267The_Samurai축구 경기장 (IOI23_soccer)C++20
0 / 100
2431 ms404 KiB
#include "soccer.h" #include "bits/stdc++.h" using namespace std; int biggest_stadium(int n, std::vector<std::vector<int>> f) { vector<bitset<49>> out(n * n); for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) f[i][j] = !f[i][j]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { int id = i * n + j; out[id] = bitset<49>(); if (f[i][j] == 0) continue; for (int k = 0; k < n * n; k++) out[id][k] = true; for (int k = 0; k < n; k++) out[id][k * n + j] = false; for (int k = 0; k < n; k++) out[id][i * n + k] = false; for (int k = i; k >= 0 and f[k][j]; k--) out[id][k * n + j] = true; for (int k = i; k < n and f[k][j]; k++) out[id][k * n + j] = true; for (int k = j; k >= 0 and f[i][k]; k--) out[id][i * n + k] = true; for (int k = j; k < n and f[i][k]; k++) out[id][i * n + k] = true; } } const int N = n * n; int ans = 0; for (int bt = 0; bt < (1 << N); bt++) { bitset<49> act; for (int i = 0; i < N; i++) act[i] = true; for (int i = 0; i < N; i++) { if (bt >> i & 1) act &= out[i]; } if ((act.to_ullong() & bt) == bt) ans = max(ans, __builtin_popcount(bt)); } return ans; }
#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...