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

알파카컵 4회: G - 알파카와 공통 차 빼기 (Hard)

Diamond III 다이아몬드 III
난이도
10s
시간 제한
1024MB
메모리 제한
1
맞았습니다!!
10
제출 수
10.0%
정답률
레이팅

의견: 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)

개요
출제자 난이도 Diamond III 다이아몬드 III 의견 1 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.
티어 투표 분포
Diamond II 다이아몬드 II 1

Log in to rate problems.

개별 의견

풀이 제출

알파카컵 4회: G - 알파카와 공통 차 빼기 (Hard)

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