Submission #715003

#TimeUsernameProblemLanguageResultExecution timeMemory
715003StickfishChessboard (IZhO18_chessboard)C++17
70 / 100
2070 ms4240 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; using ll = long long; bool get_color(pair<int, int> p, int d) { return (p.first / d + p.second / d) & 1; } signed main() { ll n, k; cin >> n >> k; vector<pair<pair<int, int>, pair<int, int>>> rect(k); for (int i = 0; i < k; ++i) { cin >> rect[i].first.first >> rect[i].first.second >> rect[i].second.first >> rect[i].second.second; --rect[i].first.first, --rect[i].first.second, --rect[i].second.first, --rect[i].second.second; } vector<ll> divs; for (int p = 1; p < n; ++p) { if (n % p == 0) divs.push_back(p); } int szd = divs.size(); vector<ll> ans(szd); for (int di = 0; di < szd; ++di) { ll d = divs[di]; if (n / d == 0) ans[di] = n * n / 2; else ans[di] = d * d * ((n / d) * (n / d) / 2); } for (auto [ld, ru] : rect) { for (int di = 0; di < szd; ++di) { ll d = divs[di]; for (int i = ld.first; i <= ru.first; ++i) for (int j = ld.second; j <= ru.second; ++j) { if (get_color({i, j}, d)) --ans[di]; else ++ans[di]; } } } ll mnans = n * n; for (auto x : ans) { mnans = min({mnans, x, n * n - x}); } cout << mnans << '\n'; }
#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...