import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import java.util.TreeMap; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Map<String,Integer> Info; Map<String,Integer> Score; int n = sc.nextInt(); while(n!=0) { Info = new HashMap<>(); Score = new TreeMap<>(); String str[] = new String[n+1]; for(int i=0;i<=n;i++) { str[i] = sc.nextLine(); } for(int i=1;i<=n;i++) { String info[] = str[i].split(" "); Info.put(info[0],translateToSecond(info[1])); } int m = sc.nextInt(); String rc[] = new String[m+1]; for(int i=0;i<=m;i++) { rc[i] = sc.nextLine(); } for(int i=1;i<=m;i++) { String info[] = rc[i].split(" "); int score; double rate = (double)translateToSecond(info[1])/(double)Info.get(info[0]); if(rate>=0&&rate<0.2) score = 0; else if(rate>=0.2&&rate<0.4) score = 1; else if(rate>=0.4&&rate<0.6) score = 2; else if(rate>=0.6&&rate<0.8) score = 3; else if(rate>=0.8&&rate<1) score = 4; else score = 5; if(Score.containsKey(info[0])) Score.put(info[0], Score.get(info[0])+score); else Score.put(info[0], score); } List<Map.Entry<String,Integer>> list = new ArrayList<>(Score.entrySet()); Collections.sort(list,new Comparator<Map.Entry<String,Integer>>() { @Override public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { return o2.getValue()-o1.getValue(); } }); for(Map.Entry<String,Integer> entry:list) { System.out.print(entry.getKey()+" "); System.out.println(entry.getValue()); } n = sc.nextInt(); } } static int translateToSecond(String time) { String t[] = time.split(":"); int minute = Integer.parseInt(t[0]); int seconds = Integer.parseInt(t[1]); return minute*60+seconds; } } |
Double click to view unformatted code.