Playground
http://acm.pku.edu.cn/JudgeOnline/problem?id=2640
半円形の針金をつなぎ合わせて、1つの閉じた図形が作れるかどうかという問題。ただし、つなぎ合わせる角度は何度でもかまわない。また、つなぎ合わせる針金はすべてを使う必要も無い。与えられるのは半円形の針金の半径。
解法がイマイチよくわからないのですが、つなぎ合わせの角度をどのようにしても良いなら、とりあえず①短い針金いくつかの長さ(半径)の合計と②それよりちょっと大きい針金の半径の大きさをくらべて、①の方が②よりちょっと長けりゃ大丈夫じゃないかなーといういい加減なコードを書くことで通りました。
これってあってるんやろか。まあ、それはそれとして、浮動小数のソートを行うコードの場合はG++のほうがGCCより短く書けるんじゃないかなーと思ったわけです。
#include<algo.h> float v['~~'],s; int k,i; main() { for(;cin>>k,i=k;puts(i<k?"YES":"NO")) { for(;s=i--;)cin>>v[i]; for(sort(v,v+k);) s<v[++i]&&i<k;s+=v[i]; } }
ヘッダのインクルードと必ず型名を書かなければなりませんが、cinが使えるのは魅力ですし、ソート部分をかなり短く書けます。GCCで浮動小数のコールバック関数を書くのはどうしても長くなると思うんですよねー。