結果

問題 No.942 プレゼント配り
ユーザー ks2m
提出日時 2019-12-05 01:28:37
言語 Java11
(openjdk 11.0.5)
結果
AC  
実行時間 212 ms
コード長 1,439 Byte
コンパイル時間 2,440 ms
使用メモリ 45,032 KB
最終ジャッジ日時 2020-01-13 05:57:07

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
01.txt AC 128 ms
34,040 KB
02.txt AC 204 ms
44,812 KB
03.txt AC 132 ms
33,924 KB
04.txt AC 128 ms
33,932 KB
05.txt AC 204 ms
43,684 KB
06.txt AC 212 ms
45,032 KB
07.txt AC 140 ms
33,924 KB
08.txt AC 136 ms
33,840 KB
09.txt AC 208 ms
42,348 KB
10.txt AC 208 ms
42,780 KB
11.txt AC 128 ms
33,800 KB
12.txt AC 128 ms
33,916 KB
13.txt AC 124 ms
33,936 KB
14.txt AC 136 ms
33,908 KB
15.txt AC 212 ms
43,116 KB
16.txt AC 208 ms
40,116 KB
17.txt AC 200 ms
42,092 KB
18.txt AC 196 ms
39,988 KB
sample_01.txt AC 128 ms
34,032 KB
sample_02.txt AC 124 ms
33,980 KB
テストケース一括ダウンロード

ソースコード

diff #
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int k = sc.nextInt();
		sc.close();

		long n2 = (long) n * (n + 1) / 2;
		if (n > 1 && n == k || n2 % k != 0) {
			System.out.println("No");
			return;
		}

		PrintWriter pw = new PrintWriter(System.out);
		pw.println("Yes");
		List<List<Integer>> list = new ArrayList<>(k);
		for (int i = 0; i < k; i++) {
			list.add(new ArrayList<>());
		}
		if (n / k % 2 == 1) {
			int a = k;
			for (int i = 0; i < k; i++) {
				list.get(i).add(a);
				a -= 2;
				if (a < 1) {
					a = k - 1;
				}
			}
			a = k + k / 2;
			for (int i = 0; i < k; i++) {
				a++;
				list.get(i).add(a);
				if (a == 2 * k) {
					a = k;
				}
			}
			for (int i = 2 * k; i < n; i++) {
				if (i / k % 2 == 0) {
					list.get(i % k).add(i + 1);
				} else {
					list.get(k - i % k - 1).add(i + 1);
				}
			}
		} else {
			for (int i = 0; i < n; i++) {
				if (i / k % 2 == 0) {
					list.get(i % k).add(i + 1);
				} else {
					list.get(k - i % k - 1).add(i + 1);
				}
			}
		}

		for (int i = 0; i < k; i++) {
			StringBuilder sb = new StringBuilder();
			for (int j : list.get(i)) {
				sb.append(j).append(' ');
			}
			sb.deleteCharAt(sb.length() - 1);
			pw.println(sb.toString());
		}
		pw.flush();
	}
}
0