SRM 529 Div1
多分参加していたはずです
250:なまえをならべるもんだい
ローマ数字を普通のに変換したりするライブラリゲーになりかねないゴミ問題。
ライブラリもないしただひたすら打つ。
import java.util.*; public class KingSort{ public String numToRoman(int a){ String ret=""; if(a>=50){ a-=50; ret+="L"; }else if(a>=40){ a-=40; ret+="XL"; }else if(a>=30){ a-=30; ret+="XXX"; }else if(a>=20){ a-=20; ret+="XX"; }else if(a>=10){ a-=10; ret+="X"; } String ichi[]={"","I","II","III","IV","V","VI","VII","VIII","IX"}; ret+=ichi[a]; return ret; } public int RomanToNum(String a){ int ret=0; if(a.startsWith("L"))ret+=50; else if(a.startsWith("XL"))ret+=40; else if(a.startsWith("XXX"))ret+=30; else if(a.startsWith("XX"))ret+=20; else if(a.startsWith("X"))ret+=10; if(a.endsWith("IX"))ret+=9; else if(a.endsWith("VIII"))ret+=8; else if(a.endsWith("VII"))ret+=7; else if(a.endsWith("VI"))ret+=6; else if(a.endsWith("IV"))ret+=4; else if(a.endsWith("V"))ret+=5; else if(a.endsWith("III"))ret+=3; else if(a.endsWith("II"))ret+=2; else if(a.endsWith("I"))ret+=1; return ret; } public String[] getSortedList(String[]a){ String[] b=new String[a.length]; String[]c=new String[a.length]; String[]p=new String[a.length]; int now=0; for(int i=0;i<a.length;i++){ b[i]=a[i].split(" ")[0]; c[i]=a[i].split(" ")[1]; boolean flag=false; for(int j=0;j<now;j++)if(p[j].equals(b[i]))flag=true; if(!flag)p[now++]=b[i]; } Arrays.sort(p,0,now); String ret[]=new String[a.length]; int index=0; for(int i=0;i<now;i++){ int r[]=new int[50]; int at=0; for(int j=0;j<a.length;j++){ if(b[j].equals(p[i])){ r[at++]=RomanToNum(c[j]); } } Arrays.sort(r,0,at); for(int j=0;j<at;j++)ret[index++]=p[i]+" "+numToRoman(r[j]); } return ret; } }
600:大理石?
法則はわかったけど微妙に時間がたりなかった
900:観賞用
Petr伝説
Chall:600をみるべきだった
Sstes:とおる
rate:1753->1794(+41)
すこし1800に足りぬことわろし