提出詳細
ソースコード
String inputLines[] = loadStrings("J.txt"); // 入力ファイルの指定
PrintWriter output = createWriter("output.txt"); // 出力ファイルの指定
int T = int(inputLines[0]); // 1行目の入力を取得して、int型に変換する
// 実際の処理をT回繰り返す
int line = 1;
for(int i = 1; i <= T; i++) {
output.println("Case #" + (i) + ":");
int c = int(inputLines[line++]);
int money = int(inputLines[line++]);
double[][] menu = new double[c+2][3];
for(int j = 0; j < c; j++){
float[] t = new float[2];
t = float(split(inputLines[line++], " "));
menu[j][1] = t[0];
menu[j][2] = t[1];
menu[j][0] = menu[j][1] / menu[j][2];
}
java.util.Arrays.sort(menu, new java.util.Comparator<double[]>() {
public int compare(double[] a, double[] b) {
return Double.compare(a[0], b[0]);
}
});
int useMoney = 0;
int eatWeight = 0;
for(int j = 0; j < c; j++){
if( money >= useMoney + menu[j][1] ){
if( money - useMoney < 1000 && money >= useMoney + menu[j+1][1] + menu[j+2][1] && menu[j+1][2] + menu[j+2][2] > menu[j][2]) {
useMoney += menu[j+1][1] + menu[j+2][1];
eatWeight += menu[j+1][2] + menu[j+2][2];
j += 2;
} else {
useMoney += menu[j][1];
eatWeight += menu[j][2];
}
}
}
output.println(useMoney + " " + eatWeight);
}
output.flush(); // ファイルに書き込む
output.close(); // ファイルを閉じる
exit();
提出情報
提出出力結果
テストケース情報