Submission #608834

#TimeUsernameProblemLanguageResultExecution timeMemory
608834pakhomoveeChessboard (IZhO18_chessboard)C++17
70 / 100
322 ms5708 KiB
#include <iostream> #include <vector> #include <string> #include <iomanip> #include <algorithm> #include <set> #include <numeric> #include <queue> using namespace std; #define int long long struct rect { int x1, y1, x2, y2; rect() {} }; int32_t main() { ios_base::sync_with_stdio(false); cin.tie(0); int n, k; cin >> n >> k; vector<rect> r(k); int S = 0; for (int i = 0; i < k; ++i) { cin >> r[i].x1 >> r[i].y1 >> r[i].x2 >> r[i].y2; --r[i].x1; --r[i].y1; --r[i].x2; --r[i].y2; S += (r[i].x2 - r[i].x1 + 1) * (r[i].y2 - r[i].y1 + 1); } int ans = n * n; for (int len = 1; len < n; ++len) { if (n % len) continue; if (1) { int cntSide = n / len; int black = (cntSide * cntSide + 1) / 2 * len * len; int wrongWhite = 0; for (rect q : r) { int par = (q.x1 / len + q.y1 / len) % 2; if (par == 1) { wrongWhite++; } } ans = min(ans, wrongWhite * 2 + black - S); } if (1) { int cntSide = n / len; int black = (cntSide * cntSide) / 2 * len * len; int wrongWhite = 0; for (rect q : r) { int par = (q.x1 / len + q.y1 / len) % 2; if (par == 0) { wrongWhite++; } } ans = min(ans, wrongWhite * 2 + black - S); } } cout << ans; } /* 6 8 3 3 3 3 1 2 1 2 3 4 3 4 5 5 5 5 4 3 4 3 4 4 4 4 2 1 2 1 3 6 3 6 */
#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...