제출 #587500

#제출 시각아이디문제언어결과실행 시간메모리
587500KoDChessboard (IZhO18_chessboard)C++17
100 / 100
314 ms4288 KiB
#include <bits/stdc++.h> using ll = long long; using std::vector; using std::array; using std::pair; using std::tuple; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); int N, Q; std::cin >> N >> Q; vector<int> A(Q), B(Q), C(Q), D(Q); for (int i = 0; i < Q; ++i) { std::cin >> A[i] >> B[i] >> C[i] >> D[i]; A[i] -= 1; B[i] -= 1; } const auto calc = [&](const int x, const int d) { const int q = x / d; const int r = x % d; if (q % 2 == 0) { return r; } else { return d - r; } }; ll ans = (ll)N * N; for (int d = 1; d < N; ++d) { if (N % d != 0) { continue; } ll sum = 0; for (int i = 0; i < Q; ++i) { sum += (ll)(calc(C[i], d) - calc(A[i], d)) * (calc(D[i], d) - calc(B[i], d)); } const ll dif = (ll)calc(N, d) * calc(N, d) - 2 * sum; ans = std::min(ans, ((ll)N * N - std::abs(dif)) / 2); } std::cout << ans << '\n'; 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...