悪夢再び….
■A World Football Cup
□問題
nチームのリーグ戦の結果から,上位n/2チームを辞書式順に出力せよ.
□解法
ソートするだけ.
□コード
- import java.util.*;
- public class A{
- Scanner sc=new Scanner(System.in);
- HashMap<String, Integer> map=new HashMap<String, Integer>();
- Team[] teams;
- void run(){
- int n=sc.nextInt();
- sc.nextLine();
- teams=new Team[n];
- for(int i=0; i<n; i++){
- String s=sc.nextLine();
- map.put(s, i);
- teams[i]=new Team();
- teams[i].name=s;
- }
- for(int i=0; i<n*(n-1)/2; i++){
- String[] s=sc.nextLine().split(" ");
- String[] team=s[0].split("-");
- String[] score=s[1].split(":");
- int t1=map.get(team[0]);
- int t2=map.get(team[1]);
- int s1=Integer.parseInt(score[0]);
- int s2=Integer.parseInt(score[1]);
- if(s1>s2){
- teams[t1].point+=3;
- }else if(s1<s2){
- teams[t2].point+=3;
- }else{
- teams[t1].point+=1;
- teams[t2].point+=1;
- }
- teams[t1].diff+=s1-s2;
- teams[t2].diff+=s2-s1;
- teams[t1].goal+=s1;
- teams[t2].goal+=s2;
- }
- Arrays.sort(teams, new java.util.Comparator<Object>(){
- @Override
- public int compare(Object o1, Object o2){
- Team t1=(Team)o1;
- Team t2=(Team)o2;
- if(t1.point!=t2.point)
- return t2.point-t1.point;
- if(t1.diff!=t2.diff)
- return t2.diff-t1.diff;
- return t2.goal-t1.goal;
- }
- });
- String[] s=new String[n/2];
- for(int i=0;i<n/2;i++)
- s[i]=teams[i].name;
- Arrays.sort(s);
- for(int i=0;i<n/2;i++)
- System.out.println(s[i]);
- }
- class Team{
- String name;
- int point;
- int diff;
- int goal;
- }
- public static void main(String[] args){
- Locale.setDefault(Locale.US);
- new A().run();
- }
- }
そして,B,C,D,Eはどれ一つとして解けませんでした,無念….
・Result
○××××
・Rating
1580 -> 1554
残念な結果です.
0 件のコメント:
コメントを投稿