# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
289653 | luciocf | Chessboard (IZhO18_chessboard) | C++14 | 272 ms | 1144 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define ff first
#define ss second
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
const int maxn = 1e5+10;
const ll inf = 1e18+10;
pii pt[maxn];
int main(void)
{
int n, k;
scanf("%d %d", &n, &k);
for (int i = 1; i <= k; i++)
{
scanf("%d %d", &pt[i].ff, &pt[i].ss);
scanf("%d %d", &pt[i].ff, &pt[i].ss);
pt[i].ff--, pt[i].ss--;
}
vector<int> D;
for (int d = 1; d*d <= n; d++)
{
if (n%d) continue;
D.push_back(d);
if (n/d != d) D.push_back(n/d);
}
ll ans = inf;
for (auto d: D)
{
if (d == n) continue;
int p = 0, b = 0;
for (int i = 1; i <= k; i++)
{
int ma = pt[i].ff%(2*d);
int mb = pt[i].ss%(2*d);
if ((ma < d && mb < d) || (ma >= d && mb >= d)) p++;
else b++;
}
ll x = ((n+2*d-1)/(2*d));
ll y = n/(2*d);
ll tot_p = 1ll*d*d*(x*x+y*y);
ans = min(ans, (tot_p-p)+b);
swap(p, b);
tot_p = 1ll*n*n-tot_p;
ans = min(ans, (tot_p-p)+b);
}
printf("%lld\n", ans);
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |