メモ

yukicoderでゆるふわgolf

yukicoder No.143 豆

問題はこちら
No.143 豆 - yukicoder

k*n-ΣA[i] を計算し、それが0以上ならその値、0未満なら-1を出力すれば良い

int main(){
	int k,n,f;
	scanf("%d%d%d",&k,&n,&f);k*=n;
	while(f--)scanf("%d",&n),k-=n;
	printf("%d",k<0?-1:k); 
	return 0;
}

ちゃっちゃっと潰すだけ

a;
main(b){
	for(scanf("%d%d%*d",&a,&b),a*=b;~scanf("%d",&b);a-=b);
	a=!printf("%d",a<0?-1:a);
}

……と思わせて実はそうではない
scanfが2箇所に分かれているのが嫌なのでこれを1か所にまとめたい。
読みこんだ値をbとすると、
1回目はa=b
2回目はa=a*b
3回目は何もしない
4回目以降はa=a-b
と、aに値を代入していくことを考えると

a,b;
main(i){
	for(;~scanf("%d",&b);++i-4?a=i-3?i-2?a-b:b:a*b:0);
	a=!printf("%d",a<0?-1:a);
}

上のものより2B短い88B

2017/08/13追記
iをincするのではなくdecしていくと縮められる

a,b;
main(i){
	for(;~scanf("%d",&b);~i--?a=~i?i?a-b:b:a*b:0);
	printf("%d",a<0?-1:a);
}

81B