1025.PAT Ranking Java(22分)

import java.util.*;

public class Main {
   static class testee implements Comparable<testee>{
      private String reg_num;
      private int score;
      private int location;
      private int localRank;
      private int finalRank;


      public testee(String reg_num, int score,int location) {
         this.reg_num = reg_num;
         this.score = score;
         this.location=location;
      }

      @Override
      public int compareTo(testee o) {//排序方法
         if (score == o.score) {
            return reg_num.compareTo(o.reg_num);
         } else if (score > o.score) {
            return -1;
         } else {
            return 1;
         }
      }
      @Override
      public String toString() {
         return reg_num + " " + finalRank + " " + (location+1) + " " + localRank;
      }

   }
   static ArrayList<ArrayList<testee>>arrayList=new ArrayList<>();
   static ArrayList<testee>totalList=new ArrayList<>();
   public static void main(String[] args) {
      Scanner scanner=new Scanner(System.in);
      int n=scanner.nextInt();
      for (int i=0;i<n;i++){
         int k=scanner.nextInt();
         ArrayList<testee>arrayList1=new ArrayList<>();//本地列表
         for (int j=0;j<k;j++){
               String reg_num=scanner.next();
               int score= scanner.nextInt();
               testee testee= new testee(reg_num,score,i);
               arrayList1.add(testee);
         }
         Collections.sort(arrayList1);
         arrayList.add(arrayList1);
      }
      for (int i=0;i< arrayList.size();i++){//本地列表排序完之后再进行并列的处理
         arrayList.get(i).get(0).localRank=1;
         totalList.add(arrayList.get(i).get(0));
         for (int j=1;j<arrayList.get(i).size();j++){
            if (arrayList.get(i).get(j).score==arrayList.get(i).get(j-1).score){
               arrayList.get(i).get(j).localRank=arrayList.get(i).get(j-1).localRank;
            }
            else arrayList.get(i).get(j).localRank=j+1;
            totalList.add(arrayList.get(i).get(j));//testee录入了localRank信息后再入totalList
         }
      }
      Collections.sort(totalList);
      totalList.get(0).finalRank=1;
      for (int i=1;i<totalList.size();i++){//总排名的并列处理
         if (totalList.get(i-1).score==totalList.get(i).score){
            totalList.get(i).finalRank=totalList.get(i-1).finalRank;
         }
         else totalList.get(i).finalRank=i+1;
      }
      System.out.println(totalList.size());
      for (int i=0;i<totalList.size();i++){
         testee t=totalList.get(i);
         System.out.println(t);
      }
}
}

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值