원판 위의 연속 합

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

요약
각 섹터에 k 이상의 양의 정수를 배치해 원형으로 연속한 블록의 합이 m부터 i까지 모든 정수를 덮도록 할 때, i의 최댓값을 구한다.
난이도

어려움10점 중 8점

유형
완전 탐색, 조합론, 수학, 구현
정답자
아직 제출이 없습니다

문제

원이 nn개의 부채꼴로 나뉘어 있습니다 (1≤n≤61 \le n \le 6). 각 부채꼴에 양의 정수를 하나씩 적으며, 모든 값은 kk 이상이어야 합니다.

어떤 수가 만들 수 있는 수라는 것은, 한 부채꼴의 값 하나와 같거나 원을 따라 연속하는 두 개 이상의 부채꼴 값들의 합과 같다는 뜻입니다. 부채꼴은 원을 이루므로, 연속한 부채꼴 묶음은 마지막 부채꼴에서 다시 첫 부채꼴로 돌아가며 이어질 수 있습니다. 이렇게 얻을 수 있는 서로 다른 묶음은 모두 n(n−1)+1n(n-1)+1개입니다: 부채꼴 하나짜리 nn개, 길이가 2,3,…,n−12, 3, \dots, n-1인 묶음들, 그리고 원 전체 하나입니다.

만들 수 있는 수들이 m,m+1,m+2,…,im, m+1, m+2, \dots, i처럼 끊김 없이 이어지는 모든 정수를 포함하도록 부채꼴의 값을 정하되, 가장 큰 값 ii를 될 수 있는 한 크게 만드세요.

예를 들어 n=5n = 5, m=2m = 2, k=1k = 1일 때 원을 따라 (1,3,10,2,5)(1, 3, 10, 2, 5)로 값을 배치하면 11부터 2121까지의 모든 정수를 만들 수 있으므로 i=21i = 21입니다.

입력

세 정수 nn, mm, kk가 이 순서대로 주어집니다 (1≤n≤61 \le n \le 6, 1≤m≤201 \le m \le 20, 1≤k≤201 \le k \le 20). 공백 또는 줄바꿈으로 구분됩니다.

k≤mk \le m이 보장되므로 mm은 항상 만들 수 있습니다 (값이 mm인 부채꼴을 하나 두면 됩니다).

출력

mm부터 ii까지의 모든 정수를 만들 수 있게 하는 가장 큰 ii를 정수 하나로 출력합니다.

힌트

n=5n = 5, m=2m = 2, k=1k = 1이고 원을 따라 (1,3,10,2,5)(1, 3, 10, 2, 5)로 배치한 경우를 살펴봅시다. 연속한 부채꼴 묶음(필요하면 원을 돌아 이어짐)의 합을 모두 구하면 11부터 2121까지의 모든 정수가 나옵니다.

  • 길이 1: 1, 3, 10, 2, 51,\ 3,\ 10,\ 2,\ 5
  • 길이 2: 1+3=4, 3+10=13, 10+2=12, 2+5=7, 5+1=61+3=4,\ 3+10=13,\ 10+2=12,\ 2+5=7,\ 5+1=6
  • 길이 3: 1+3+10=14, 3+10+2=15, 10+2+5=17, 2+5+1=8, 5+1+3=91+3+10=14,\ 3+10+2=15,\ 10+2+5=17,\ 2+5+1=8,\ 5+1+3=9
  • 길이 4: 1+3+10+2=16, 3+10+2+5=20, 10+2+5+1=18, 2+5+1+3=11, 5+1+3+10=191+3+10+2=16,\ 3+10+2+5=20,\ 10+2+5+1=18,\ 2+5+1+3=11,\ 5+1+3+10=19
  • 원 전체: 1+3+10+2+5=211+3+10+2+5=21

[2,21][2, 21] 구간의 모든 값이 나타나므로 이 경우의 답은 i=21i = 21입니다.

예제3

  1. 예제 1

    입력
    5
    2
    1
    
    예상 출력
    21
    
  2. 예제 2

    입력
    1
    5
    1
    
    예상 출력
    5
    
  3. 예제 3

    입력
    2
    1
    1
    
    예상 출력
    3