题目:
分析:
成绩记录,题目正确-1000+罚时,错误不记录
录入数据到ArrayList,获取数据组数
通过组数创建两个数组,然后通过成绩冒泡排序
成绩相等比较姓名
import java.util.ArrayList;
import java.util.Scanner;
public class T2093 {
public static int f(String s,int m){
int ans=0;
if(s.equals("0")||s.charAt(0)=='-')return 0;
else{
ans-=1000;
char c[]=s.toCharArray();
int time=0;
int time2=0;
boolean flag=false;
for(int i=0;i<c.length;i++){
if(c[i]=='('||c[i]==')') {
flag=true;
continue;
}
if(!flag){
time*=10;
time+=(c[i]-'0');
}else{
time2*=10;
time2+=(c[i]-'0');
}
}
ans+=time;
ans+=time2*m;
}
return ans;
}
public static void out(String name,int sum){
System.out.print(name);
int n=name.length();
for(int i=n;i<10;i++){
System.out.print(" ");
}
System.out.print(" ");
int count=0;
while(sum<0){
sum+=1000;
count++;
}
if(count>9){
System.out.print(count);
}else{
System.out.print(" "+count);
}
System.out.print(" ");
if(sum>99){
System.out.print(sum);
}else if(sum>9){
System.out.print(" "+sum);
}else{
System.out.print(" "+sum);
}
System.out.println();
}
public static boolean big(String s1,String s2){
int len=Math.min(s1.length(), s2.length());
for(int i=0;i<len;i++){
if(s1.charAt(i)>s2.charAt(i))
return true;
else if(s1.charAt(i)<s2.charAt(i))
return false;
}
return (s1.length()>s2.length());
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
ArrayList<Integer> list1=new ArrayList<Integer>();
ArrayList<String> list2=new ArrayList<String>();
while(sc.hasNext()){
String name=sc.next();
int sum=0;
for(int i=0;i<n;i++){
String s=sc.next();
sum+=f(s,m);
}
list1.add(sum);
list2.add(name);
}
int len=list1.size();
int[] arr1=new int[len];
String arr2[]=new String [len];
for(int i=0;i<len;i++){
arr1[i]=list1.get(i);
arr2[i]=list2.get(i);
}
for(int i=0;i<len-1;i++){
for(int j=0;j<len-i-1;j++){
if(arr1[j]>arr1[j+1]){
int temp=arr1[j];
arr1[j]=arr1[j+1];
arr1[j+1]=temp;
String temps=arr2[j];
arr2[j]=arr2[j+1];
arr2[j+1]=temps;
}else if(arr1[j]==arr1[j+1]){
if(big(arr2[j],arr2[j+1])){
String temps=arr2[j];
arr2[j]=arr2[j+1];
arr2[j+1]=temps;
}
}
}
}
for(int i=0;i<len;i++){
out(arr2[i],arr1[i]);
}
}
}