読者です 読者をやめる 読者になる 読者になる

SRM 529 Div1

TopCoder

多分参加していたはずです

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に足りぬことわろし