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
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
AC × 5
AC × 20
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