View Code of Problem 100

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.


Back to problem 100