Submission #634871

#TimeUsernameProblemLanguageResultExecution timeMemory
634871fabijan_cikacChessboard (IZhO18_chessboard)C++17
100 / 100
1850 ms460 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long int ll n, k; vector<ll> v; ll num[100100]; ll mod(ll x, ll vel){ if (x % vel == 0 && x != 0) return vel; return (x % vel); } bool black(ll x, ll y, ll vel){ x -= mod(x, vel); y -= mod(y, vel); x /= vel; y /= vel; if ((x + y) & 1) return 0; return 1; } ll pref(ll x, ll y, ll vel){ if (x == 0 || y == 0) return 0; ll ans = 0; ll x2 = x - mod(x, vel); ll y2 = y - mod(y, vel); ll val1 = x2 / vel; ll val2 = y2 / vel; ll p = val1 * val2; ll u = p / 2; ans += -(p - u) * vel * vel + u * vel * vel; p = val2; u = p / 2; ll pt = 1; if (val1 % 2 == 0) pt = -1; ans += pt * (p - u) * vel * (x - x2) + -pt * u * vel * (x - x2); p = val1; u = p / 2; pt = 1; if (val2 % 2 == 0) pt = -1; ans += pt * (p - u) * vel * (y - y2) + -pt * u * vel * (y - y2); if (black(x, y, vel)) ans -= (x - x2) * (y - y2); else ans += (x - x2) * (y - y2); return ans; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> k; for (ll i = 1; i < n; ++i){ if (n % i == 0){ v.push_back(i); ll d = n / i; num[i] = (d * d + 1) / 2; num[i] *= i * i; } } for (int i = 0; i < k; ++i){ ll x1, y1, x2, y2; cin >> x1 >> y1 >> x2 >> y2; for (ll vel: v){ num[vel] += (pref(x2, y2, vel) - pref(x2, y1 - 1, vel) - pref(x1 - 1, y2, vel) + pref(x1 - 1, y1 - 1, vel)); } } ll sol = 1e18; for (ll x: v) sol = min(abs(sol), min(num[x], n * n - abs(num[x]))); cout << sol; return 0; }
#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...