カメヲラボ

主にプログラミングとお勉強全般について書いてます

ぬぬーぬー

POJ2503 Babelfish

http://acm.pku.edu.cn/JudgeOnline/problem?id=2503
辞書検索の問題。詳しくはnuさん(http://d.hatena.ne.jp/nu4nu/20080808/1218177271)を参照。

この問題に関しては、結構頑張ったもののnuさんに1B及ばず(2008.08.09現在)の144B。nuさんのコードは実行時間からみてscanfのみで解決しているっぽいので自分もやってみたら、余計に長くなってしまいました(;´Д`)試しに文字列埋め込みのコードをSubmitするもRuntimeError。retだけの文字列でもアウトなので、何か対策がされているのでしょうかね。

とりあえず、自分のコードは目一杯縮めたと思うので、紹介しておきます。

2バイト文字が1バイトでカウントされるようになったhack(http://d.hatena.ne.jp/Ozy/20070919#p1)を取り入れて、144Bまで短縮してあります。

strcmp();v['あ~'],k,*p;
main(n,s)
{
  for(;gets(s);)
    k?p=bsearch(s,v,n,24,k),puts(p?p+3:"eh"):
    ~sscanf(s,"%s%s",p+3,p=v+6*n++)||qsort(v,n,24,k=strcmp);
}

このコード自体ではもうダメっぽいので、これから挑戦する人は多分scanfだけで読み込んだ方が良いです。