AOJ 0556 Tile
こんにちは川です。
今回は、規則性を見出す問題ですかね。
赤である場合は
(縦1列) ai % 3 == 1 で ai - bi が 0 以上 で N - bi が 3 * (ai / 3) もしくは、
(横1列) bi % 3 == 1 で bi - ai が 0 以上 で N - ai が 3 * (bi / 3)
青である場合は
(縦1列) ai % 3 == 2 で ai - bi が 0 以上 で N - bi が 3 * (ai / 3) -1 もしくは、
(横1列) bi % 3 == 2 で bi - ai が 0 以上 で N - ai が 3 * (bi / 3) -1
それ以外が黄ですね。
やってみればわかります。
#include<bits/stdc++.h>
using
namespace
std;
int
main()
{
int
N,n;
cin>>N>>n;
for
(
int
i=0,ai,bi;i<n;i++){
cin>>ai>>bi;
if
(ai>(N+1)/2)ai=N-ai+1;
if
(bi>(N+1)/2)bi=N-bi+1;
if
(ai%3==1&&bi-ai>=0&&N-bi>=3*(ai/3)||
bi%3==1&&ai-bi>=0&&N-ai>=3*(bi/3))cout<<
"1\n"
;
else
if
(ai%3==2&&bi-ai>=0&&N-bi>=3*(ai/3)-1||
bi%3==2&&ai-bi>=0&&N-ai>=3*(bi/3)-1)cout<<
"2\n"
;
else
cout<<
"3\n"
;
}
}