만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

브루와 오렌지 나누기

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

요약
증가 쌍이 X개, 감소 쌍이 Y개가 되도록 1부터 10^9 사이의 값으로 이루어진 가장 짧은 수열을 만듭니다.
난이도

보통10점 중 7점

유형
조합론, 그리디, 구현
정답자
아직 제출이 없습니다

문제

브루의 창고에는 11 이상 10910^9 이하의 맛을 가진 오렌지가 각각 10910^9개씩 쌓여 있다. 브루는 친구들과 오렌지를 나눠 먹으려 한다.

브루는 친구를 총 NN명 초대할 예정이다. NN의 값은 아직 정해지지 않았다. NN명의 친구들은 일렬로 서서 브루가 주는 오렌지를 한 개씩 받아간다. 브루는 아래 조건을 만족하도록 오렌지를 주고 싶다.

먼저 온 친구부터 차례로 11번, 22번, ⋯\cdots, NN번 친구라고 하자. ii번 친구가 받은 오렌지의 맛을 AiA_i라고 하자. 이때,

  • i<ji<j이고 Ai<AjA_i < A_j인 (i,j)(i, j)의 개수는 XX개이다.
  • i<ji<j이고 Ai>AjA_i > A_j인 (i,j)(i, j)의 개수는 YY개이다.

조건을 만족하도록 오렌지를 나눠 주는 방법이 여러 가지라면, 브루는 오렌지를 최대한 아끼기 위해 NN이 가장 작은 방법을 고르려 한다. 브루의 조건을 만족하도록 친구들을 초대해 오렌지를 나눠 주는 프로그램을 만들어 보자.

입력

첫 줄에 두 정수 XX와 YY가 띄어쓰기로 구분되어 주어진다.

출력

첫 줄에는 초대할 친구의 수 NN을 출력한다.

둘째 줄에는 NN명의 친구에게 나눠줄 오렌지의 맛 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N을 띄어쓰기로 구분하여 출력한다.

가능한 방법이 여러 가지인 경우 NN이 최소인 방법을 출력한다. 이마저도 여러 가지라면 NN이 최소인 방법 중 아무거나 출력한다.

위 조건을 만족하는 N≤106N \le 10^6인 방법이 항상 존재함이 보장된다.

제한

  • 0≤X,Y≤1090 \le X, Y \le 10^9
  • X+Y>0X + Y > 0
  • AA의 각 원소는 11 이상 10910^9 이하의 정수이다.

예제2

  1. 예제 1

    입력
    2 2
    
    예상 출력
    4
    1 2 2 1
    
  2. 예제 2

    입력
    7 3
    
    예상 출력
    5
    1 2 5 4 3