prettify

2016年5月17日火曜日

"謎の人物X" AtCoder Regular Contest 023 B

B - 謎の人物X

解法
実験するとこんな感じになる。左上を1行1列目として一般化すると
i行j列目にD回の移動で行けるのは、i+j<=Dかつ、i+jとDの偶奇が一致する場合。
それぞれのマス目でこの条件を満たすか調べて、満たすもののmaxをとったのが答えになる。
// ARC023B
#include <bits/stdc++.h>
#define REP(i,n) for(int i = 0; i < (int)(n); ++i)
using namespace std;

int main(){
    int R, C, D;
    cin >> R >> C >> D;
    vector< vector > board(R,vector(C,0));
    REP(i,R){
        REP(j,C){
            cin >> board[i][j];}}
    int ans = 0;
    REP(i,R){
        REP(j,C){
            if(i+j<=D && (i+j)%2==D%2) ans = max(ans, board[i][j]);}}
    cout << ans << endl;
    return 0;
}

0 件のコメント:

コメントを投稿