Submission #1297408
Source Code Expand
#include <stdio.h>
#include <algorithm>
using namespace std;
typedef long long ll;
ll f(ll a, ll b, ll c) {
return max(max(a, b), c) - min(min(a, b), c);
}
ll solve(int n, int m) {
ll ret = 1e18;
for (int i = 1; i <= m; i++) {
ll a1 = (ll)(n)*(i), a2, a3;
{
int low, m1, m2, high;
low = 1, high = n;
while (high - low > 10) {
m1 = (low + high) / 2;
m2 = m1 + 1;
ll v1 = f(a1, (ll)(m - i)*m1, (ll)(m - i)*(n - m1));
ret = min(ret, v1);
ll v2 = f(a1, (ll)(m - i)*m2, (ll)(m - i)*(n - m2));
ret = min(ret, v2);
if (v1 <= v2) high = m2 - 1;
else low = m1 + 1;
}
for (int j = low; j <= high; j++) {
ll v1 = f(a1, (ll)(m - i)*j, (ll)(m - i)*(n - j));
ret = min(ret, v1);
}
} {
int low, m1, m2, high;
low = i + 1, high = m;
while (high - low > 10) {
m1 = (low + high) / 2;
m2 = m1 + 1;
ll v1 = f(a1, (ll)(n)*(m1 - i), (ll)(n)*(m - m1));
ret = min(ret, v1);
ll v2 = f(a1, (ll)(n)*(m2 - i), (ll)(n)*(m - m2));
ret = min(ret, v2);
if (v1 <= v2) high = m2 - 1;
else low = m1 + 1;
}
for (int j = low; j <= high; j++) {
ll v1 = f(a1, (ll)(n)*(j - i), (ll)(n)*(m - j));
ret = min(ret, v1);
}
}
}
return ret;
}
int main() {
int n, m; scanf("%d%d", &n, &m);
ll ans1, ans2;
ans1 = solve(n, m);
ans2 = solve(m, n);
printf("%lld", min(ans1, ans2));
}
Submission Info
Submission Time
2017-05-20 21:40:29+0900
Task
C - Chocolate Bar
User
hongjun7
Language
C++14 (GCC 5.4.1)
Score
400
Code Size
1420 Byte
Status
AC
Exec Time
66 ms
Memory
128 KB
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:51:33: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
int n, m; scanf("%d%d", &n, &m);
^
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
400 / 400
Status
Set Name
Test Cases
Sample
0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 0_04.txt
All
0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 0_04.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt
Case Name
Status
Exec Time
Memory
0_00.txt
AC
0 ms
128 KB
0_01.txt
AC
1 ms
128 KB
0_02.txt
AC
0 ms
128 KB
0_03.txt
AC
18 ms
128 KB
0_04.txt
AC
66 ms
128 KB
1_00.txt
AC
0 ms
128 KB
1_01.txt
AC
18 ms
128 KB
1_02.txt
AC
23 ms
128 KB
1_03.txt
AC
30 ms
128 KB
1_04.txt
AC
18 ms
128 KB
1_05.txt
AC
36 ms
128 KB
1_06.txt
AC
57 ms
128 KB
1_07.txt
AC
30 ms
128 KB
1_08.txt
AC
32 ms
128 KB
1_09.txt
AC
39 ms
128 KB
1_10.txt
AC
53 ms
128 KB
1_11.txt
AC
20 ms
128 KB
1_12.txt
AC
46 ms
128 KB
1_13.txt
AC
31 ms
128 KB
1_14.txt
AC
17 ms
128 KB