import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner=new Scanner(System.in); while(scanner.hasNext()) { int n=Integer.parseInt(scanner.nextLine()); if(n==0) { break; } List<String> musics=new LinkedList<>(); List<Integer> times=new LinkedList<>(); for(int i=0;i<n;i++) { String[] s=scanner.nextLine().split(" "); musics.add(s[0]); String[] s1=s[1].split(":"); times.add(Integer.parseInt(s1[0])*60+Integer.parseInt(s1[1])); } int m=Integer.parseInt(scanner.nextLine()); List<Music> musicList=new LinkedList<>(); List<String> musics1=new LinkedList<>(); List<Integer> fraction=new LinkedList<>(); for(int i=0;i<m;i++) { String[] s=scanner.nextLine().split(" "); String[] s1=s[1].split(":"); int lt=Integer.parseInt(s1[0])*60+Integer.parseInt(s1[1]); int l=musics.indexOf(s[0]); if(!musics1.contains(s[0])) { musics1.add(s[0]); fraction.add(f(lt,times.get(l))); } else { int le=musics1.indexOf(s[0]); fraction.set(le, fraction.get(le)+f(lt,times.get(l))); } } for(int i=0;i<musics1.size();i++) { Main.Music min=new Main().new Music(); min.setName(musics1.get(i)); min.setFraction(fraction.get(i)); musicList.add(min); } Collections.sort(musicList); for(Music mu:musicList) { System.out.println(mu.getName()+" "+mu.getFraction()); } } } public static int f(int n,int all) { double p=n*1.0/all; if(p>=0&&p<0.2) { return 0; } if(p>=0.2&&p<0.4) { return 1; } if(p>=0.4&&p<0.6) { return 2; } if(p>=0.6&&p<0.8) { return 3; } if(p>=0.8&&p<1) { return 4; } return 5; } class Music implements Comparable{ private String name; private int fraction; public void setName(String name) { this.name=name; } public void setFraction(int fraction) { this.fraction=fraction; } public int getFraction() { return fraction; } public String getName() { return name; } @Override public int compareTo(Object o) { Music m=(Music)o; if(this.fraction>m.getFraction()) { return -1; } if(this.fraction==m.getFraction()) { return this.name.compareTo(m.getName()); } return 1; } } } |
Double click to view unformatted code.