RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
KOI00063

누적 거리

Gold II 골드 II
난이도
2s
시간 제한
1024MB
메모리 제한
3
맞았습니다!!
3
제출 수
100.0%
정답률
레이팅

의견: 0

설명

KOI 나라는 수직선 위에 놓인 N개의 마을로 구성되어 있다. 이 중 i (\(1 \le i \le N\))번째 마을은 \(x_{i}\) 위치에 놓여 있으며 \(a_{i}\)명이 거주 중이다. 또한 서로 다른 두 마을이 같은 위치에 놓인 경우는 없다.

KOI 나라는 모든 국민이 참여하는 모임을 개최하려고 한다. 모든 사람들이 모임 장소에 도착하기 위해 이동해야 하는 거리의 합을 누적 거리라고 부르고, 모임 장소가 x일 때의 누적 거리를 f(x)로 나타내자.

i번째 마을에 사는 사람이 x 위치에서 열리는 모임에 참가하기 위해서 이동해야 하는 거리는 |\(x_{i}\) − x|이다. i번째 마을에는 \(a_{i}\)명이 거주 중이므로 i번째 마을에 사는 사람들의 이동 거리의 합은 \(a_{i}|x_{i}\) − x|가 된다. 이 값을 모든 마을에 대해 합한 값이 모임 장소가 x일 때의 누적 거리가 될 것이다. 즉, f(x) = \(a_{1} \times |x_{1} - x| + a_{2} \times |x_{2} - x| + \cdots + a_{n} \times |x_{n} - x|\)이다.

예를 들어 마을의 위치가 \(x_{1}\) = 1, \(x_{2}\) = 3, \(x_{3}\) = 6이고, 각 마을에 거주하는 사람들의 수가 \(a_{1}\) = 2, \(a_{2}\) = 1, \(a_{3}\) = 3이라고 하면, 모임 장소가 \(x = 4\)일 때의 누적 거리는 f(4) = \(2 \times |1 - 4| + 1 \times |3 - 4| + 3 \times |6 - 4| = 13\) 이다.

KOI 나라는 모임이 개최될 장소의 후보를 Q개 준비해 두었다. 이 때 j (\(1 \le j \le Q\))번째 후보 장소의 위치는 \(q_{j}\)이다. 이 때 서로 다른 두 후보 장소의 위치가 같은 경우는 없으나 마을의 위치와 후보 장소의 위치가 같을 수 있다. 각각의 후보 장소에 대해 누적 거리를 계산하는 프로그램을 작성하라.

Hint.

|x|는 x < 0이면 −x, \(x \ge 0\)이면 x인 절댓값 기호이다.

제약

참고: \(|x|\)\(x < 0\)이면 \(-x\), \(x \ge 0\)이면 \(x\)인 절댓값 기호이다.

  • \(1 \le N \le 200\,000\)
  • 모든 \(i\) (\(1 \le i \le N\)) 에 대해, \(1 \le a_i \le 1\,000\)
  • 모든 \(i\) (\(1 \le i \le N\)) 에 대해, \(-10^{9} \le x_i \le 10^{9}\)
  • \(1 \le Q \le 200\,000\)
  • 모든 \(j\) (\(1 \le j \le Q\)) 에 대해, \(-10^{9} \le q_j \le 10^{9}\)
  • \(1 \le i_1 < i_2 \le N\) 에 대해 \(x_{i_1} \ne x_{i_2}\). 즉, 모든 마을의 위치는 서로 다르다.
  • \(1 \le j_1 < j_2 \le Q\) 에 대해 \(q_{j_1} \ne q_{j_2}\). 즉, 모든 후보 장소의 위치는 서로 다르다.
  • 주어지는 모든 수는 정수이다.
입력 형식

첫 번째 줄에 N과 Q가 공백을 사이에 두고 차례로 주어진다.

다음 N개의 줄에는 마을에 대한 정보가 주어진다. 이 중 i (\(1 \le i \le N\))번째 줄에는 \(a_{i}\)\(x_{i}\)가 공백을 사이에 두고 차례로 주어진다.

다음 Q개의 줄에는 모임 장소 후보에 대한 정보가 주어진다. 이 중 j (\(1 \le j \le Q\))번째 줄에는 \(q_{j}\)가 주어진다.

출력 형식

j (\(1 \le j \le Q\))번째 줄에 모임 장소가 j번째 후보 모임 장소인 \(q_{j}\)일 때의 누적 거리, 즉 f(\(q_{j}\))의 값을 출력한다.

서브태스크
서브태스크점수설명

1

9점

\(N, Q \le 5\,000\)

2

21점
  • 모든 \(i\) (\(1 \le i \le N\)) 에 대해 \(1 \le x_i \le 200\,000\)
  • 모든 \(j\) (\(1 \le j \le Q\)) 에 대해 \(1 \le q_j \le 200\,000\)

3

25점

모든 \(i\) (\(1 \le i \le N\)) 에 대해 \(a_i = 1\)

4

45점

추가 제약 조건 없음.

예제 1
입력
3 1
2 1
1 3
3 6
4
출력
13
예제 2
입력
4 5
3 -4
1 -10
2 11
4 6
6
-5
1
-12
14
출력
56
84
66
144
116
문제 정보

riseoj 작성

출처 올림피아드 > 한국정보올림피아드 > KOI 2021 > 2차 대회 > 중등부 2번

평가 및 의견

누적 거리

개요
출제자 난이도 Gold II 골드 II 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

누적 거리

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8