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