I Would Walk 500 Miles

시간 제한2초메모리 제한512 MB

요약
고정된 모듈러 공식으로 정해지는 거리에서 서로 다른 그룹 사이 최소 거리가 최대가 되도록 N마리의 소를 K개의 그룹으로 나눈다.
난이도

보통10점 중 7점

유형
그리디, 수학, 유니온 파인드, 정렬
정답자
아직 제출이 없습니다

문제

농부 John은 NN마리의 소 (N≤7500)(N \leq 7500)를 KK개의 비어 있지 않은 그룹 (2≤K≤N)(2 \leq K \leq N)으로 나누려고 한다. 이때 서로 다른 두 그룹에 속한 어떤 두 소도 몇 마일을 걸어야만 만날 수 있어야 한다. 소 xx와 소 yy (1≤x<y≤N)(1 \leq x < y \leq N)는 서로를 만나기 위해 (2019201913x+2019201949y) mod 2019201997(2019201913x + 2019201949y)\text{ mod } 2019201997마일을 기꺼이 걸을 의향이 있다.

NN마리의 소를 KK개의 비어 있지 않은 그룹으로 나누었을 때, MM을 서로 다른 두 그룹에 속한 어떤 두 소가 서로를 만나기 위해 기꺼이 걸으려는 마일 수의 최솟값이라고 하자. 소들의 헌신을 시험하기 위해, 농부 John은 MM이 최대가 되도록 NN마리의 소를 KK개의 그룹으로 최적으로 나누려고 한다.

입력

입력은 한 줄로 주어지며, NN과 KK가 공백으로 구분되어 들어 있다.

출력

최적해에서 MM을 출력한다.

힌트

이 예에서 소 1과 소 2는 서로를 만나기 위해 2019201817마일을 걸을 의향이 있다. 소 2와 소 3은 2019201685마일을 걷는다. 그리고 소 1과 소 3은 2019201769마일을 걷는다. 따라서 소 1은 혼자 두고 소 2와 소 3을 한 그룹으로 묶으면 M=min⁡(2019201817,2019201769)=2019201769M = \min(2019201817,2019201769) = 2019201769이 되며, 이 경우가 여기서 얻을 수 있는 최선이다.

예제1

  1. 예제 1

    입력
    3 2
    
    예상 출력
    2019201769