AOJ : 0556 - タイル (Tile)
問題概要
http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=0556&lang=jp
日本語の問題文なので, 説明は省略.
あんまりやりたくない系の問題.
アルゴリズム
(左端から ai までの距離, 右端から ai までの距離) の内で短い方を取得し, これをwidthとします.
また, (上端から bi までの距離, 下端から bi までの距離) の内で短い方を取得し, これをheightとします.
- もし, height が height > width の範囲内なら
- (width - 1) % 3 + 1 が答え
- もし, 上記の範囲外ならば,
- (height - 1) % 3 + 1 が答え
正確な if 文に落とし込むまでが難しいですが, それができれば解けます.
プログラム
int main(void){ int n,k; cin>>n>>k; while(k--){ int x,y; cin>>x>>y; int width = min(x,n-x+1); int height = min(y,n-y+1); if(height > width){ cout<<(width - 1) % 3 + 1<<endl; } else{ cout<<(height - 1) % 3 + 1<<endl; } } return 0; }