This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define pii pair<int, int>
#define ff first
#define ss second
vector<vector<int> > a, dp, us;
void solve(){
    int n, m, k;
    cin>>n>>m>>k;
    pii s, t;
    cin>>s.ff>>s.ss;
    cin>>t.ff>>t.ss;
    for(int i=0; i<=n + 2; i++){
        us.pb({});
        dp.pb({});
        a.pb({});
        for(int j=0; j<=m + 2; j++){
            dp[i].pb(0);
            us[i].pb(0);
            a[i].pb(0);
        }
    }
    for(int i=1; i<=n; i++){
        for(int j=1; j<=m; j++){
            char c;
            cin>>c;
            if(c == '#') a[i][j] = 1;
            else a[i][j] = 0;
        }
    }
    vector<pii> nap = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};
    deque<pair<pii, int>> h;
    h.pb({s, 0});
    while(h.size()){
        int x=h[0].ff.ff, y=h[0].ff.ss;
        if(us[x][y]){
            h.pop_front();
            continue;
        }
        dp[x][y] = h[0].ss;
        us[x][y] = 1;
        h.pop_front();
        for(pii d: nap){
            if(!us[x + d.ff][y + d.ss] and x + d.ff <= n and x + d.ff >= 1 and y + d.ss <= m and y + d.ss >= 1 and a[x + d.ff][y + d.ss] != 1){
                h.push_front({{x + d.ff, y + d.ss}, dp[x][y]});
                continue;
            }
        }
        for(int i=max(1, x - k); i<=min(n, x + k); i++){
            for(int j=max(1, y-k); j<=min(m, y + k); j++){
                if(!us[i][j] and !(abs(j - y) == k and abs(x - i) == k)){
                    h.pb({{i, j}, dp[x][y] + 1});
                }
            }
        }
    }
    for(int i=1; i<=n; i++){
        for(int j=1; j<=m; j++){
            //cout<<dp[i][j]<<' ';
        }
        //cout<<'\n';
    }
    cout<<dp[t.ff][t.ss];
}   
int main(){
    solve();
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |