2010年6月27日日曜日

Codeforces Beta Round #19

Codeforces Beta Round #17(6/25 0:00~2:00)
悪夢再び….

■A World Football Cup

□問題
nチームのリーグ戦の結果から,上位n/2チームを辞書式順に出力せよ.

□解法
ソートするだけ.

□コード
  1. import java.util.*;  
  2.   
  3. public class A{  
  4.  Scanner sc=new Scanner(System.in);  
  5.  HashMap<String, Integer> map=new HashMap<String, Integer>();  
  6.  Team[] teams;  
  7.   
  8.  void run(){  
  9.   int n=sc.nextInt();  
  10.   sc.nextLine();  
  11.   teams=new Team[n];  
  12.   for(int i=0; i<n; i++){  
  13.    String s=sc.nextLine();  
  14.    map.put(s, i);  
  15.    teams[i]=new Team();  
  16.    teams[i].name=s;  
  17.   }  
  18.     
  19.   for(int i=0; i<n*(n-1)/2; i++){  
  20.    String[] s=sc.nextLine().split(" ");  
  21.    String[] team=s[0].split("-");  
  22.    String[] score=s[1].split(":");  
  23.    int t1=map.get(team[0]);  
  24.    int t2=map.get(team[1]);  
  25.    int s1=Integer.parseInt(score[0]);  
  26.    int s2=Integer.parseInt(score[1]);  
  27.    if(s1>s2){  
  28.     teams[t1].point+=3;  
  29.    }else if(s1<s2){  
  30.     teams[t2].point+=3;  
  31.    }else{  
  32.     teams[t1].point+=1;  
  33.     teams[t2].point+=1;  
  34.    }  
  35.    teams[t1].diff+=s1-s2;  
  36.    teams[t2].diff+=s2-s1;  
  37.    teams[t1].goal+=s1;  
  38.    teams[t2].goal+=s2;  
  39.   }  
  40.     
  41.   Arrays.sort(teams, new java.util.Comparator<Object>(){  
  42.    @Override  
  43.    public int compare(Object o1, Object o2){  
  44.     Team t1=(Team)o1;  
  45.     Team t2=(Team)o2;  
  46.     if(t1.point!=t2.point)  
  47.      return t2.point-t1.point;  
  48.     if(t1.diff!=t2.diff)  
  49.      return t2.diff-t1.diff;  
  50.     return t2.goal-t1.goal;  
  51.    }  
  52.   });  
  53.     
  54.   String[] s=new String[n/2];  
  55.   for(int i=0;i<n/2;i++)  
  56.    s[i]=teams[i].name;  
  57.   Arrays.sort(s);  
  58.   for(int i=0;i<n/2;i++)  
  59.    System.out.println(s[i]);  
  60.  }  
  61.   
  62.  class Team{  
  63.   String name;  
  64.   int point;  
  65.   int diff;  
  66.   int goal;  
  67.  }  
  68.   
  69.  public static void main(String[] args){  
  70.   Locale.setDefault(Locale.US);  
  71.   new A().run();  
  72.  }  
  73. }  


そして,B,C,D,Eはどれ一つとして解けませんでした,無念….

・Result
○××××

・Rating
1580 -> 1554

残念な結果です.

0 件のコメント: