メモ

yukicoderでゆるふわgolf

yukicoder No.586 ダブルブッキング

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