问题如下:
本人代码如下:
package a1009;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
int catFood, rooms, jb, redcatfood, sum;
double total;
Main m = new Main();
while(true){
catFood = cin.nextInt();
rooms = cin.nextInt();
if(catFood==-1&&rooms==-1){System.exit(0);}
Pair[] array = new Pair[rooms];
for(int i=0; i< rooms; i++){
jb = cin.nextInt();
redcatfood = cin.nextInt();
Pair p = m.new Pair(i, (1.0*jb)/(1.0*redcatfood),redcatfood);
array[i] = p;
}
Arrays.sort(array, m.new PairComparator());
total = 0;
sum = catFood;
for(int j=0;j<rooms;j++){
if(array[j].getAmount()>sum){
total += sum*array[j].getRatio();
System.out.println(String.format("%1$.3f", total));
break;
}else{
total += array[j].getAmount()*array[j].getRatio();
sum -= array[j].getAmount();
}
}
}
}
public class Pair{
private int index;
private double ratio;
private int amount;
public Pair(int index, double ratio, int amount){
this.index = index;
this.ratio = ratio;
this.amount = amount;
}
public int getIndex(){
return this.index;
}
public double getRatio(){
return this.ratio;
}
public int getAmount(){
return this.amount;
}
}
public class PairComparator implements Comparator<Pair>{
@Override
public int compare(Pair o1, Pair o2) {
// TODO Auto-generated method stub
if(o1.getRatio()<o2.getRatio()){
return 1;
}else if(o1.getRatio()>o2.getRatio()){
return -1;
}else{
return 0;
}
}
}
}
过了简单的测试,但submit后还是wrong answer,不知错在哪儿了。求高人解答