読者です 読者をやめる 読者になる 読者になる

メモ

yukicoderで遊んでいる競プロゆるふわ勢

yukicoder No.99 ジャンピング駒

問題はこちら
No.99 ジャンピング駒 - yukicoder

よく考えると、初期位置が偶数の駒は偶数座標に、奇数の駒は奇数座標にしか動けない
ジャンプするには差が1であることが必要なので、消える2つの駒の座標は必ず偶数と奇数がセットになっている
逆に偶数座標の駒と奇数座標の駒があれば、移動により隣接できジャンプすることができるので
初期位置の偶奇の駒の差が最終的に残る駒の数になる

int main()
	int s=0,a,b,i,n;
	scanf("%d",&n)
	while(n--){
		scanf("%d",&a);
		s+=a%2?1:-1;
	}
	printf("%d",abs(s));
	return 0;
}

圧縮して

s,a;
main(b){
	for(gets(&a);~scanf("%d",&a);)s+=a%2*2-1;
	s=!printf("%d",abs(s));
}

nの読み込みをいい感じにごまかして完成

s,b;
main(a){
	for(;~scanf("%d",&a);b=1)s+=a&1?b:-b;
	s=!printf("%d",abs(s));
}

73B

2016/10/16追記
a&1は1になるんだからa&1?:-bという感じに真ん中を省略したい
これはa&1をa&bに変えれば達成できる

s,b;
main(a){
	for(;~scanf("%d",&a);b=1)s+=a&b?:-b;
	s=!printf("%d",abs(s));
}

72B