■0152 Bowling
簡単な実装ゲー.
import java.util.*; import java.lang.*; import java.math.*; import java.io.*; import static java.lang.Math.*; import static java.util.Arrays.*; public class Main{ Scanner sc=new Scanner(System.in); int INF=1<<28; double EPS=1e-9; int n; R[] rs; void run(){ for(;;){ n=sc.nextInt(); if(n==0){ break; } sc.nextLine(); rs=new R[n]; for(int j=0; j<n; j++){ Scanner s=new Scanner(sc.nextLine()); rs[j]=new R(); rs[j].id=s.nextInt(); for(int i=0; s.hasNext(); i++){ rs[j].pins[i]=s.nextInt(); } } solve(); } } void solve(){ for(int i=0; i<n; i++){ rs[i].score=getScore(rs[i].pins); } Arrays.sort(rs); for(R r : rs){ println(r.id+" "+r.score); } } int getScore(int[] pin){ int score=0; for(int frame=0, i=0; frame<10; frame++){ if(frame<9){ if(pin[i]==10){ score+=10+pin[i+1]+pin[i+2]; i++; }else if(pin[i]+pin[i+1]==10){ score+=10+pin[i+2]; i+=2; }else{ score+=pin[i]+pin[i+1]; i+=2; } }else{ score+=pin[i]+pin[i+1]+pin[i+2]; } } return score; } class R implements Comparable<R>{ int id, score; int[] pins=new int[22]; @Override public int compareTo(R r){ if(r.score!=score){ return r.score-score; }else{ return id-r.id; } } } void debug(Object... os){ System.err.println(Arrays.deepToString(os)); } void print(String s){ System.out.print(s); } void println(String s){ System.out.println(s); } public static void main(String[] args){ // System.setOut(new PrintStream(new BufferedOutputStream(System.out))); new Main().run(); } }
0 件のコメント:
コメントを投稿