カメヲラボ

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

気晴らしショートコーディング

POJ3300 Tour de France

久しぶりにShort Coding Wikiを覗いてみたら問題が追加されてたので久しぶりに遊んでみました。
http://www.4dm.org/ShortCoding/index.php?POJ3300
追加してくれたのはfkmさんかな?

#import<algo.h>

float*t,b,v[99];

main()
{
  for(int i,f,r;cin>>f>>r;printf("%.2f\n",b))
  {
    t=v;
    for(i=f+r;b=i--;)cin>>*t++;
    for(;i<f*r;)t[++i]=v[i%r+f]/v[i/r];
    for(sort(t,t+i);--i;)b>?=*++t/t[-1];
  }
}

いかにもG++が有利ですってかんじの問題ですが、for文が妙に多いです。(1)読み込み (2)比の計算 (3)最大値を見つける という3種類のループをどうにかまとめられんかなーと思うのですが、まあまとめたところで余計に長くなる予感がするのでやめておきました。あと、配列サイズはたぶん10200以上じゃないとダメなような気がしますが、運良く99で通ってます。ポインタを上手に使えれば、もう少し綺麗になるのではないかと。