問題はこちら
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