程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu2093(考試排名)

hdu2093(考試排名)

編輯:C++入門知識

hdu2093(考試排名)


點擊打開hdu2093

 

Problem Description

C++編程考試使用的實時提交系統,具有即時獲得成績排名的特點。它的功能是怎麼實現的呢?
我們做好了題目的解答,提交之後,要麼“AC”,要麼錯誤,不管怎樣錯法,總是給你記上一筆,表明你曾經有過一次錯誤提交,因而當你一旦提交該題“AC”後,就要與你算一算帳了,總共該題錯誤提交了幾回。雖然你在題數上,大步地躍上了一個台階,但是在耗時上要攤上你共花去的時間。特別是,曾經有過的錯誤提交,每次都要攤上一定的單位時間分。這樣一來,你在做出的題數上,可能領先別人很多,但是,在做出同樣題數的人群中,你可能會在耗時上處於排名的劣勢。
例如:某次考試一共8題(A,B,C,D,E,F,G,H),每個人做的題都在對應的題號下有個數量標記,負數表示該學生在該題上有過的錯誤提交次數,但到現在還沒有AC,正數表示AC所耗的時間,如果正數a跟上一對括號,裡面有個整數b,那就表示該學生提交該題AC了,耗去了時間a,同時,曾經錯誤提交了b次,因此對於下述輸入數據:

\

若每次錯誤提交的罰分為20分,則其排名從高到低應該是這樣的:
Josephus 5 376
John 4 284
Alice 4 352
Smith 3 167
Bob 2 325
Bush 0 0

Input

輸入數據的第一行是考試題數n(1≤n≤12)以及單位罰分數m(10≤m≤20),每行數據描述一個學生的用戶名(不多於10個字符的字串)以及對所有n道題的答題現狀,其描述采用問題描述中的數量標記的格式,見上面的表格,提交次數總是小於100,AC所耗時間總是小於1000。


Output

將這些學生的考試現狀,輸出一個實時排名。實時排名顯然先按AC題數的多少排,多的在前,再按時間分的多少排,少的在前,如果湊巧前兩者都相等,則按名字的字典序排,小的在前。每個學生占一行,輸出名字(10個字符寬),做出的題數(2個字符寬,右對齊)和時間分(4個字符寬,右對齊)。名字、題數和時間分相互之間有一個空格。

Sample Input

8 20
Smith	  -1	-16	8	0	0	120	39	0
John	  116	-2	11	0	0	82	55(1)	0
Josephus  72(3)	126	10	-3	0	47	21(2)	-2
Bush	  0	-1	-8	0	0	0	0	0
Alice	  -2	67(2)	13	-1	0	133	79(1)	-1
Bob	  0	0	57(5)	0	0	168	-7	0

Sample Output

Josephus    5  376
John        4  284
Alice       4  352
Smith       3  167
Bob         2  325
Bush        0    0
import java.util.Scanner;
public class P2093 {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		while(sc.hasNext()){
			int n=sc.nextInt();
			int m=sc.nextInt();
			Person[] p=new Person[1000];
			int k=0;
			while(sc.hasNext()){//
				String name=sc.next();
				int time=0,num=0;
				for(int i=0;i0){
						num++;
						time+=timer+numb*m;
					}
				}
				p[k++]=new Person(name,num,time);
				//System.out.println(num=+num+ time=+time);
			}
			sort(p,k);
			for(int i=0;ip[j+1].time){
						swap(p,j,j+1);
					}else if(p[j].time==p[j+1].time){
						if(p[j].name.compareTo(p[j+1].name)>0){
							swap(p,j,j+1);
						}
					}
				}
			}
		}
	}
	private static void swap(Person[] p, int j, int i) {
		Person temp=new Person();
		temp=p[j];
		p[j]=p[i];
		p[i]=temp;
	}
}
class Person{
	public String name;
	public int num;
	public int time;
	public Person(String name,int num,int time){
		this.name=name;
		this.num=num;
		this.time=time;
	}
	public Person(){
		
	}
}


 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved