BB끼BB끼 AA끼AA끼 수열 찾기

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

요약
A, B, N이 주어질 때 1 이상 N 이하의 모든 정수를 한 번씩 포함하고 인접한 두 수의 차가 정확히 A 또는 B이며 그런 쌍을 모두 한 번씩만 사용하는 수열을 찾아 출력하거나, 없으면 -1을 출력한다.
난이도

어려움10점 중 8점

유형
그래프, DFS, 구현, 재귀
정답자
아직 제출이 없습니다

문제

양의 정수 AA, BB, NN이 주어질 때 집합 SS를 S:=\left\\{ \left( x,y \right)\in\mathbb{Z}^2\middle |y-x\in\left\\{ A,B \right\\}\land 1\le x\<y\le N \right\\}으로 정의한다.

아래 조건을 만족하는 수열 PP를  BB끼BB끼 AA끼AA끼 수열이라고 한다.

  • 11 이상 NN 이하의 모든 정수는 PP에 한 개 이상 존재하며, PP는 11 이상 NN 이하의 정수만으로 구성된다.

  • 모든 P_i,P_i+1(1≤i<∣P∣)P\_i,P\_{i+1}(1\le i<\lvert P\rvert)에 대하여 Q_i:=(min⁡(P_i,P_i+1),max⁡(P_i,P_i+1))Q\_i:=\left( \min\left( P\_i,P\_{i+1} \right) ,\max\left( P\_i,P\_{i+1} \right) \right)라고 할 때, 다음을 만족한다.

    • Q_i∈SQ\_i\in S
    • ∀s∈S,∃i:Q_i=s\forall s\in S,\exists i:Q\_i=s
    • i≠j⇒Q_i≠Q_ji\ne j\Rightarrow Q\_i\ne Q\_j

BB끼BB끼 AA끼AA끼 수열이 존재한다면 가능한 수열을 아무거나 하나 출력하고 그렇지 않다면 -1을 출력하라.

수열은 수를 순서대로 나열한 것으로, 순서가 상관있고, 같은 원소의 중복을 허용한다. 그리고 집합은 수가 포함되는지 여부를 판단하는 것으로, 순서가 상관없고, 같은 원소는 최대 한 번만 포함될 수 있다.

입력

첫 번째 줄에 정수 A,B,N(1≤A,B,N≤105)A,B,N(1\le A,B,N\le 10^5)이 공백으로 구분되어 주어진다.

출력

주어진 입력에 대해 BB끼BB끼 AA끼AA끼 수열이 있다면 첫 번째 줄에 수열의 길이를 출력한다. 만약 BB끼BB끼 AA끼AA끼 수열이 없다면 -1을 출력한다.

BB끼BB끼 AA끼AA끼 수열이 존재한다면 두 번째 줄에 수열의 수들을 차례대로 공백으로 구분하여 출력한다.

예제2

  1. 예제 1

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

    입력
    1 3 10
    
    예상 출력
    -1