分析:这题目,算法不难。用c++实现起来很简单,但是由于对java掌握不熟练,对Java对象的排序掌握不熟,出现了很多问题。
注意: 掌握Java对象数组排序的方法!!
import java.util.Arrays;
import java.util.Scanner;
class Node implements Comparable{
int pi;
int mi;
public int compareTo(Object o){
Node n = (Node)o;
return n.pi-this.pi;
}
}
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int v,n;
v= in.nextInt();
while(0 != v){
n = in.nextInt();
Node[] arr = new Node[n];
for (int i = 0; i < n; i++) {
arr[i]= new Node();
arr[i].pi = in.nextInt();
arr[i].mi = in.nextInt();
}
Arrays.sort(arr,0,n);
int sum=0;
for(int i=0;i<n;i++)
{
if(v>=arr[i].mi){
sum+=arr[i].pi*arr[i].mi;
v-=arr[i].mi;
}
else if (v>0){
sum+=v*arr[i].pi;
v=0;
}
else break;
}
System.out.println(sum);
v = in.nextInt();
}
}
}