結果
問題 | No.115 遠足のおやつ |
ユーザー | htensai |
提出日時 | 2019-12-05 15:35:01 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 124 ms / 5,000 ms |
コード長 | 1,291 bytes |
コンパイル時間 | 4,078 ms |
コンパイル使用メモリ | 80,884 KB |
実行使用メモリ | 41,816 KB |
最終ジャッジ日時 | 2025-01-03 01:50:35 |
合計ジャッジ時間 | 9,475 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 40 |
ソースコード
import java.util.*; public class Main { static int n; static int d; static int k; public static void main (String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); d = sc.nextInt(); k = sc.nextInt(); ArrayDeque<Integer> deq = getSnacks(1, 0, 0); if (deq == null) { System.out.println(-1); return; } StringBuilder sb = new StringBuilder(); for (int i = 0; deq.size() > 0; i++) { if (i != 0) { sb.append(" "); } sb.append(deq.pollFirst()); } System.out.println(sb); } static ArrayDeque<Integer> getSnacks(int idx, int used, int total) { if (d - total <= used) { return null; } if (idx == k) { if (d - total > n) { return null; } else { ArrayDeque<Integer> deq = new ArrayDeque<>(); deq.add(d - total); return deq; } } for (int i = used + 1; i < n; i++) { if ((d - total - i) / (k - idx) > n) { continue; } ArrayDeque<Integer> deq = getSnacks(idx + 1, i, total + i); if (deq != null) { deq.addFirst(i); return deq; } } return null; } }