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

メモ

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

yukicoder No.396 クラス替え

問題はこちら
No.396 クラス替え - yukicoder

折り返しまで込めて周期は2M
以下、手順2を「行き」、手順3を「帰り」と呼ぶことにする。
・2人が共に「行き」または共に「帰り」で同じクラスに割り振られることと X≡Y mod 2M は同値
・1回目の「行き」と1回目の「帰り」で同じクラスに割り振られることと X+Y=2M+1 は同値
よって2人がそれぞれ「行き」と「帰り」で同じクラスに割り振られることと X+Y≡1 mod 2M は同値

以上より

int main(){
	int m,x,y;
	scanf("%*d%d%d%d",&m,&x,&y);
	puts((x-y)%(2*m)==0||(x+y)%(2*m)==1?"YES":"NO");
	return 0;
}

ぎゅっとして

a,b;main(k){a=scanf("%*d%d%d%d",&k,&a,&b)>puts((a-b)%(k*=2)&&(a+b-1)%k?"NO":"YES");}

84B