問題はこちら
No.586 ダブルブッキング - yukicoder
各部屋について最初の1人で部屋を予約することにする。
2人目以降は振替により(P1+P2)円の損失が発生する。
a[1000],p1,p2,n,x,s; main(){ scanf("%d%d%d",&p1,&p2,&n); for(int i=0;i<n;i++){ scanf("%d",&x); if(a[x]==0){//まだ予約されてない部屋なら a[x]++;//確保する }else{//既に予約されている部屋なら s+=p1+p2;//損失が発生 } } printf("%d",s); }
ぎゅっとする。人数だけ数えて最後に掛け算をした方が短い
a[9999],k,s,x; main(i){ for(;~scanf("%d",&x);)i--<0?k+=i+2&&a[x]++:(s+=x); printf("%d",s*k); }
90B