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 件のコメント:
コメントを投稿