結果
| 問題 |
No.115 遠足のおやつ
|
| コンテスト | |
| ユーザー |
ぴろず
|
| 提出日時 | 2014-12-28 23:40:43 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 229 ms / 5,000 ms |
| コード長 | 1,129 bytes |
| コンパイル時間 | 2,859 ms |
| コンパイル使用メモリ | 85,808 KB |
| 実行使用メモリ | 48,896 KB |
| 最終ジャッジ日時 | 2025-01-03 00:59:29 |
| 合計ジャッジ時間 | 11,456 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 40 |
ソースコード
package no115;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int d = sc.nextInt();
int m = sc.nextInt();
String[][][] dp = new String[2][m+1][d+1];
dp[0][0][0] = "";
int before = 0;
int now = 1;
for(int i=0;i<n;i++) {
for(int j=0;j<=m;j++) {
for(int k=0;k<=d;k++) {
dp[now][j][k] = dp[before][j][k];
if (j >= 1 && k >= i + 1 && dp[before][j-1][k-i-1] != null) {
dp[now][j][k] = min(dp[now][j][k], dp[before][j-1][k-i-1].concat(String.valueOf((char) (i+1))));
}
}
}
before = 1 - before;
now = 1 - now;
}
String ans = dp[before][m][d];
if (ans == null) {
System.out.println(-1);
return;
}
StringBuilder sb = new StringBuilder();
for(int i=0;i<ans.length();i++) {
if (i > 0) {
sb.append(' ');
}
sb.append((int) ans.charAt(i));
}
System.out.println(sb.toString());
}
static String min(String a,String b) {
if (a == null) {
return b;
}else if(b == null) {
return a;
}else{
return a.compareTo(b) < 0 ? a : b;
}
}
}
ぴろず