알파카컵 4회: G - 알파카와 공통 차 빼기 (Hard)
의견: 1
알파카는 옆에 있는 배열 \(Arr\)가 걸리적거려 빼고 싶어 한다. 하지만 그냥 빼면 재미가 없기에, 모든 수의 합이 \(0\)에 최대한 가깝게 만들고 싶다.
빼는 규칙은 다음과 같다. 어떤 인접한 두 수를 골라, 그 둘의 차를 보고 다음과 같이 연산한다.
- 차가 \(A\) 이하이면, 두 수에서 각각 \(A'\)을 뺀다.
- 차가 \(A\) 초과 \(B\) 이하이면, 두 수에서 각각 \(B'\)을 뺀다.
- 차가 \(B\) 초과이면, 두 수에서 각각 \(C'\)을 뺀다.
단, 연산을 적용하는 순서는 직접 고를 수 있으며, 각 인접한 쌍은 최소 \(0\)번, 최대 \(1\)번 선택할 수 있다. 또한 배열 \(Arr\)의 위치(순서)는 바꿀 수 없다.
참고로, 어떤 인접한 쌍의 차는 그 쌍에 \(A'\), \(B'\), 혹은 \(C'\)을 빼는 연산을 한 뒤 다시 계산된다.
이때 만들 수 있는 모든 수의 합이 \(0\)에 최대한 가까운 값을 구하여라. 가능한 값이 여러 개라면 모두 출력한다.
- 주어지는 모든 수는 정수이다.
- \(2 \le N \le 5\,000\)
- \(A < B\)
- \(-10^9 \le A,\ B \le 10^9\)
- \(-1000 \le A',\ B',\ C' \le 1000\)
- \(-10^9 \le Arr_i \le 10^9\)
첫째 줄에 배열 \(Arr\)의 길이 \(N\)이 주어진다.
둘째 줄에 두 정수 \(A\), \(B\)가 공백으로 구분되어 주어진다.
셋째 줄에 세 정수 \(A'\), \(B'\), \(C'\)이 공백으로 구분되어 주어진다.
넷째 줄에 배열 \(Arr\)의 원소 \(Arr_1, Arr_2, \cdots, Arr_N\)이 공백으로 구분되어 주어진다.
모든 수의 합이 \(0\)에 최대한 가까운 모든 값을 비오름차순으로 출력한다.
| 서브태스크 | 점수 | 설명 |
|---|---|---|
1 | 3점 | \(N \le 5\) |
2 | 12점 | \(N \le 15\) |
3 | 17점 | \(N \le 400\) |
4 | 22점 | \(N \le 800\) |
5 | 46점 | \(N \le 5000\) |
HyunwooAlpaca 작성
출처 지정되지 않음
평가 및 의견
알파카컵 4회: G - 알파카와 공통 차 빼기 (Hard)
Log in to rate problems.
풀이 제출
알파카컵 4회: G - 알파카와 공통 차 빼기 (Hard)