|
| 1 | +import java.io.BufferedReader; |
| 2 | +import java.io.IOException; |
| 3 | +import java.io.InputStreamReader; |
| 4 | +import java.util.StringTokenizer; |
| 5 | + |
| 6 | +public class SB_19939 { |
| 7 | + static int N, K; |
| 8 | + public static void main(String[] args) throws IOException { |
| 9 | + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); |
| 10 | + StringTokenizer st = new StringTokenizer(br.readLine()); |
| 11 | + |
| 12 | + N = Integer.parseInt(st.nextToken()); |
| 13 | + K = Integer.parseInt(st.nextToken()); |
| 14 | + |
| 15 | + // 우선, 나눌 수 있으려면 (0~K-1)까지 더한값이 N-K값보다 커야함 |
| 16 | + // 0부터 K-1까지 합 (K개의 그룹에 최소 한 개씩 공을 배분하는 데 필요한 최소 공 개수) : 등차수열의 합 |
| 17 | + int need = K * (K - 1) / 2; |
| 18 | + |
| 19 | + if ((N-K) < need) { |
| 20 | + System.out.println(-1); |
| 21 | + return; |
| 22 | + } |
| 23 | + |
| 24 | + // 최소 1개씩 배분 후 남은 공 T |
| 25 | + int T = N - need; |
| 26 | + |
| 27 | + if (T%K==0) System.out.println(K - 1); // 나눠떨어지면 0~K-1로 분배할 수 있고, 이때 최소 차는 (K-1)-0으로 K-1 |
| 28 | + else System.out.println(K); // 나눠떨어지지 않으면, 분배에 1씩 추가하게되고, 최소와 최대차가 1늘어남 |
| 29 | + } |
| 30 | +} |
0 commit comments