#include using namespace std; typedef signed long long ll; #define _P(...) (void)printf(__VA_ARGS__) #define FOR(x,to) for(x=0;x<(to);x++) #define FORR(x,arr) for(auto& x:arr) #define FORR2(x,y,arr) for(auto& [x,y]:arr) #define ALL(a) (a.begin()),(a.end()) #define ZERO(a) memset(a,0,sizeof(a)) #define MINUS(a) memset(a,0xff,sizeof(a)) template bool chmax(T &a, const T &b) { if(a bool chmin(T &a, const T &b) { if(a>b){a=b;return 1;}return 0;} //------------------------------------------------------- int H,W,K; int A[303][303]; int dp[303][303]; int hoge(int v) { if(v>1000000000) return K+1; int y,x; FOR(y,H) FOR(x,W) dp[y][x]=1<<30; dp[0][0]=A[0][0]> Q; Q.push({-dp[0][0],0}); while(Q.size()) { int co=-Q.top().first; int cy=Q.top().second/W; int cx=Q.top().second%W; Q.pop(); int d[]={0,1,0,-1}; int i; FOR(i,4) { int ty=cy+d[i]; int tx=cx+d[i^1]; if(ty<0||ty>=H||tx<0||tx>=W) continue; if(chmin(dp[ty][tx],co+(A[ty][tx]>H>>W>>K; FOR(y,H) FOR(x,W) cin>>A[y][x]; int ret=1; for(i=30;i>=0;i--) if(hoge(ret+(1<