問題はこちら
No.564 背の順 - yukicoder
最初は1位で、高い人が現れるたびに順位は1つ下がる
h,n,t,S; main(){ scanf("%d%d",&h,&n); S=1; for(int i=1;i<n;i++){ scanf("%d",&t); if(t>h)S++; } printf("%d",S); if(S%10==1)puts("st"); else if(S%10==2)puts("nd"); else if(S%10==3)puts("rd"); else puts("th"); }
最初の順位を0位にしておけば最初の処理がまとめられる
また、文字の出力部分は適当なフォーマット指定により短くできる(はじめて知った)
h,t,s; main(i){ for(;~scanf("%d",&t);){ if(!h)h=t; if(i--)s+=t>=h;//nだけ読み飛ばし } printf("%d%.2s",s,"thstndrd"+(s%10<4)*s%10*2); }
h,t,s; main(i){ for(;~scanf("%d",&t);s+=i--&&t/h)h=h?:t; printf("%d%.2s",s,"thstndrd"+(s%10<4)*s%10*2); }
101B