Official

B - Job Assignment Editorial by QCFium


仕事 A に割り当てる従業員の番号と、仕事 B に割り当てる従業員の番号を全探索すればよいです。
この解法の時間計算量は \(\Theta(N^2)\) ですが、\(O(N)\) で解くこともできます。

解答例 (C++)

#include <bits/stdc++.h>

int ri() {
	int n;
	scanf("%d", &n);
	return n;
}

int main() {
	int n = ri();
	std::vector<int> a(n);
	std::vector<int> b(n);
	for (int i = 0; i < n; i++) a[i] = ri(), b[i] = ri();
	
	int res = 1000000000;
	for (int i = 0; i < n; i++) for (int j = 0; j < n; j++)
		res = std::min(res, i == j ? a[i] + b[j] : std::max(a[i], b[j]));
	printf("%d\n", res);
	
	return 0;
}

解答例 (Python)

n = int(input())
a = [0 for i in range(n)]
b = [0 for i in range(n)]
for i in range(n) :
	a[i], b[i] = map(int, input().split())

res = 1000000000
for i in range(n) :
	for j in range(n) :
		res = min(res, a[i] + b[j] if i == j else max(a[i], b[j]))

print(res)

posted:
last update: