부분 수열 고르기

시간 제한1초메모리 제한1024 MB

요약
길이 N인 등차수열에서 원소의 합이 M인 가장 긴 부분 수열을 찾아 출력하고, 없으면 -1을 출력한다.
난이도

보통10점 중 7점

유형
수학, 그리디, 동적 계획법, 정수론
정답자
아직 제출이 없습니다

문제

길이가 NN인 수열 A=a_1,a_2,a_3,⋯ ,a_NA = \\{a\_1, a\_2, a\_3, \cdots, a\_N\\}는 초항이 aa이고 공차가 dd인 유한 등차수열이다.

양의 정수 MM에 대하여 합이 MM인 AA의 부분 수열 중 가장 긴 것을 구하시오.

부분 수열이란 주어진 수열에서 원래 순서를 유지하며 00개 이상의 원소를 제거하여 얻은 수열이다.

입력

첫째 줄에 네 정수 NN, aa, dd, MM이 공백으로 구분되어 주어진다. (1≤N,a,d≤106;(1 \leq N, a, d \leq 10^6; 1≤M≤1018)1 \leq M \leq 10^{18})

출력

첫째 줄에 합이 MM인 AA의 부분 수열 중 가장 긴 것의 길이 LL을 출력한다.

둘째 줄에 그러한 부분 수열의 원소 LL개를 공백으로 구분하여 출력한다. 가능한 답이 여러 가지라면 그중 아무거나 출력한다.

만약 그런 부분 수열이 존재하지 않는다면 첫째 줄에 −1−1을 대신 출력한다.

예제2

  1. 예제 1

    입력
    5 2 2 10
    
    예상 출력
    2
    4 6
    
  2. 예제 2

    입력
    3 1 2 7
    
    예상 출력
    -1