티스토리 뷰

https://www.acmicpc.net/problem/29755

 

29755번: 블랙홀과 소행성

첫 번째 줄에 블랙홀의 수 $N$과 소행성의 수 $M$이 공백으로 구분되어 주어진다. $(1 \le N, M \le 200\,000)$ 두 번째 줄에 $N$개의 정수 $b_1$, $b_2$, $\cdots$, $b_N$이 공백으로 구분되어 주어진다. $(-1\,000\,000

www.acmicpc.net

const [[N, M], _B, ...AW] = require('fs')
	.readFileSync('./dev/stdin')
	.toString()
	.trim()
	.split('\n')
	.map((v) => v.trim().split(' ').map(Number));

const B = _B.sort((a, b) => a - b);

let answer = 0;

AW.forEach((v) => {
	const [a, w] = v;
	let left = 0;
	let right = N - 1;

	while (left <= right) {
		const mid = Math.floor((left + right) / 2);
		const target = B[mid];
		if (target == a) {
			break;
		} else if (target < a) {
			left = mid + 1;
		} else if (target > a) {
			right = mid - 1;
		}
	}
	let near = Infinity;
	const lastCheck = Math.floor((left + right) / 2);
	for (let i = lastCheck - 1; i <= lastCheck + 1; i++) {
		if (i >= 0 && i < N) {
			near = Math.min(near, Math.abs(B[i] - a));
		}
	}
	answer = Math.max(answer, near * w);
});

console.log(answer);
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함