Submission #213341

#TimeUsernameProblemLanguageResultExecution timeMemory
213341quocnguyen1012Chessboard (IZhO18_chessboard)C++14
39 / 100
191 ms3584 KiB
#include <bits/stdc++.h> #define fi first #define se second #define mp make_pair #define pb push_back #define eb emplace_back using namespace std; typedef long long ll; typedef pair<int, int> ii; int N, K; vector<pair<ii, ii>> rect; ll res = 1e18; ll sub(int d, int x, int y) { int X = x / d; int Y = y / d; ll ret = 0; if(X % 2 == 0 || Y % 2 == 0) ret += 1ll * X * Y / 2 * d * d; else ret += (1ll * X * Y / 2 + 1) * d * d; if (X % 2 == Y % 2) { ret += (ll) (x - X * d) * (y - Y * d); } if (Y % 2 == 0) { ret += (ll) (X + 1) / 2 * (y - Y * d) * d; } else { ret += (ll) X / 2 * (y - Y * d) * d; } if (X % 2 == 0) { ret += (ll) (Y + 1) / 2 * (x - X * d) * d; } else { ret += (ll) Y / 2 * (x - X * d) * d; } return ret; } ll solve(int d) { ll sum = 0, rem = 0; for(auto & all : rect){ sum += sub(d, all.se.fi, all.se.se) + sub(d, all.fi.fi - 1, all.fi.se - 1) - sub(d, all.fi.fi - 1, all.se.se) - sub(d, all.se.fi, all.fi.se - 1); rem += 1ll * (all.se.se - all.fi.se + 1) * (all.se.fi - all.fi.fi + 1); } ll black = sub(d, N, N); ll white = N * N - black; res = min(res, black + rem - 2 * sum); res = min(res, white - rem + 2 * sum); } signed main(void) { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #ifdef LOCAL freopen("A.INP", "r", stdin); freopen("A.OUT", "w", stdout); #endif // LOCAL cin >> N >> K; rect.resize(K); for(auto & x : rect) cin >> x.fi.fi >> x.fi.se >> x.se.fi >> x.se.se; for(int i = 1; i < N; ++i){ if(N % i == 0) solve(i); } cout << res; }

Compilation message (stderr)

chessboard.cpp: In function 'll solve(int)':
chessboard.cpp:56:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
#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...