注意:对国家进行排序时,只对要求的国家进行排序就行了
/**
* 文件名:Main.java
*
* 版本信息:
* 日期:2013-6-26
* Copyright Corporation 2013
* 版权所有
*
*/
package 题目1007;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
*
* 项目名称:arithmetic
* 类名称:Main
* 类描述:
* 创建人:黄传聪
* 创建时间:2013-6-26 下午12:49:28
* 修改人:黄传聪
* 修改时间:2013-6-26 下午12:49:28
* 修改备注:
* @version
*
*/
public class Main {
private double goldNum; //金牌数
private double medal; //奖牌数
private double persons; //人口数
private double gp; // 金牌人口比例
private double mp; //奖牌人口比例
private int min0; //最小排名
private int min1; //最小排名
private int min2; //最小排名
private int min3; //最小排名
private int method0; //使得排名最小的排名方式
private int method1; //使得排名最小的排名方式
private int method2; //使得排名最小的排名方式
private int method3; //使得排名最小的排名方式
private int id;
public Main(){
this.min0 = 1;
this.min1 = 1;
this.min2 = 1;
this.min3 = 1;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int countries ;
int sortNum;
List<Main> country = null;
Scanner scanner = new Scanner(System.in);
Main main = null;
while(scanner.hasNext()){
countries = scanner.nextInt();
if(countries == 0){
break;
}
sortNum = scanner.nextInt();
int[] sortArrays = new int[sortNum];
country = new ArrayList<Main>();
int i,j;
for(i=0;i<countries;i++){
main = new Main();
main.goldNum = scanner.nextInt();
main.medal = scanner.nextInt();
main.persons = scanner.nextInt();
main.gp = main.goldNum / main.persons;
main.mp = main.medal / main.persons;
main.id = i;
country.add(main);
}
for(i=0;i<sortNum;i++){
sortArrays[i] = scanner.nextInt();
}
sort(country,sortArrays);
}
}
public static void sort(List<Main> list, int[] sortArray){
int i,j;
List<Main> tempList = new ArrayList<Main>();
// 提出sortArray中不包含的国家
for(i=0;i<sortArray.length;i++){
for(j=0;j<list.size();j++){
if(list.get(j).id == sortArray[i]){
tempList.add(list.get(j));
}
}
}
// 分别使用四种方式进行排名
// 按照金牌总数排名
for(i=0;i<tempList.size();i++){
Main temp = tempList.get(i);
temp.method0 = 1;
for(j=0;j<tempList.size();j++){
if(temp.goldNum < tempList.get(j).goldNum){
temp.min0++;
}
}
}
// 使用第二种方法
for(i=0;i<tempList.size();i++){
Main temp = tempList.get(i);
temp.method1 = 2;
for(j=0;j<tempList.size();j++){
if(temp.medal < tempList.get(j).medal){
temp.min1 ++;
}
}
}
for(i=0;i<tempList.size();i++){
Main temp = tempList.get(i);
temp.method2 = 3;
for(j=0;j<tempList.size();j++){
if(temp.gp < tempList.get(j).gp){
temp.min2++;
}
}
}
for(i=0;i<tempList.size();i++){
Main temp = tempList.get(i);
temp.method3 = 4;
for(j=0;j<tempList.size();j++){
if(temp.mp < tempList.get(j).mp){
temp.min3++;
}
}
}
// for(i=0;i<tempList.size();i++){
// System.out.println(tempList.get(i).min0 + " " + tempList.get(i).min1 + " " + tempList.get(i).min2 + " " + tempList.get(i).min3);
// }
for(i=0;i<sortArray.length;i++){
Main main = tempList.get(i);
int a0 = main.min0;
int a1 = main.min1;
int a2 = main.min2;
int a3 = main.min3;
int min1 = -1,min2 = -1,min = -1;
if(a0<=a1){
min1 = a0;
}else{
min1 = a1;
}
if(a2<=a3){
min2 = a2;
}else{
min2 = a3;
}
if(min1<=min2){
min = min1;
}else{
min = min2;
}
if(min == a0){
System.out.println(a0 + ":" + main.method0);
}else if(min == a1){
System.out.println(a1 + ":" + main.method1);
}else if(min == a2){
System.out.println(a2 + ":" + main.method2);
}else if(min == a3){
System.out.println(a3 + ":" + main.method3);
}
}
System.out.println();
}
}