2011年2月20日日曜日

Aizu Online Judge 0152 Bowling

■0152 Bowling

簡単な実装ゲー.

  1. import java.util.*;  
  2. import java.lang.*;  
  3. import java.math.*;  
  4. import java.io.*;  
  5.   
  6. import static java.lang.Math.*;  
  7. import static java.util.Arrays.*;  
  8.   
  9. public class Main{  
  10.   
  11.  Scanner sc=new Scanner(System.in);  
  12.   
  13.  int INF=1<<28;  
  14.  double EPS=1e-9;  
  15.   
  16.  int n;  
  17.  R[] rs;  
  18.   
  19.  void run(){  
  20.   for(;;){  
  21.    n=sc.nextInt();  
  22.    if(n==0){  
  23.     break;  
  24.    }  
  25.    sc.nextLine();  
  26.    rs=new R[n];  
  27.    for(int j=0; j<n; j++){  
  28.     Scanner s=new Scanner(sc.nextLine());  
  29.     rs[j]=new R();  
  30.     rs[j].id=s.nextInt();  
  31.     for(int i=0; s.hasNext(); i++){  
  32.      rs[j].pins[i]=s.nextInt();  
  33.     }  
  34.    }  
  35.    solve();  
  36.   }  
  37.  }  
  38.   
  39.  void solve(){  
  40.   for(int i=0; i<n; i++){  
  41.    rs[i].score=getScore(rs[i].pins);  
  42.   }  
  43.   Arrays.sort(rs);  
  44.   for(R r : rs){  
  45.    println(r.id+" "+r.score);  
  46.   }  
  47.  }  
  48.   
  49.  int getScore(int[] pin){  
  50.   int score=0;  
  51.   for(int frame=0, i=0; frame<10; frame++){  
  52.    if(frame<9){  
  53.     if(pin[i]==10){  
  54.      score+=10+pin[i+1]+pin[i+2];  
  55.      i++;  
  56.     }else if(pin[i]+pin[i+1]==10){  
  57.      score+=10+pin[i+2];  
  58.      i+=2;  
  59.     }else{  
  60.      score+=pin[i]+pin[i+1];  
  61.      i+=2;  
  62.     }  
  63.    }else{  
  64.     score+=pin[i]+pin[i+1]+pin[i+2];  
  65.    }  
  66.   }  
  67.   return score;  
  68.  }  
  69.   
  70.  class R implements Comparable<R>{  
  71.   int id, score;  
  72.   int[] pins=new int[22];  
  73.   
  74.   @Override  
  75.   public int compareTo(R r){  
  76.    if(r.score!=score){  
  77.     return r.score-score;  
  78.    }else{  
  79.     return id-r.id;  
  80.    }  
  81.   }  
  82.  }  
  83.   
  84.  void debug(Object... os){  
  85.   System.err.println(Arrays.deepToString(os));  
  86.  }  
  87.   
  88.  void print(String s){  
  89.   System.out.print(s);  
  90.  }  
  91.   
  92.  void println(String s){  
  93.   System.out.println(s);  
  94.  }  
  95.   
  96.  public static void main(String[] args){  
  97.   // System.setOut(new PrintStream(new BufferedOutputStream(System.out)));  
  98.   new Main().run();  
  99.  }  
  100. }  

0 件のコメント: