Language: C++

/*input
3 3 1
2 1 2 3
.@.
.@.
.@.
*/

#include <bits/stdc++.h>
#include <unistd.h>
#include <ext/pb_ds/assoc_container.hpp> 
#include <ext/pb_ds/tree_policy.hpp> 

#define rep(i,j,n) for(i=j;i<n;i++)
#define repi(i,j,n) for(i=j;i>n;i--)
#define inf 1e9
#define M 1000000007
#define pie 3.141592653589793238
#define ll long long
#define ld long double
#define vll vector<ll>
#define pll pair<ll,ll>
#define vpll vector<pll>
#define pb push_back
#define F first
#define S second
#define endl '\n'
#define UQ(x) (x).resize(distance((x).begin(),unique(all((x)))))

using namespace std;
using namespace __gnu_pbds; 

template<typename T>
using ordered_set=tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
mt19937_64 rnd64(chrono::high_resolution_clock::now().time_since_epoch().count());

ll power(ll a,ll m,ll mod){
    ll ans=1;
    while(m){
        if(m%2){
            ans*=a;
            ans%=(mod);
        }
        a=(a*a)%(mod);
        m>>=1;
    }
    return ans;
}


void init(ll* a,ll n,ll val){
    for(ll i=0;i<n;i++)
        a[i]=val;
}

ll dx[4]={1,0,-1,0};
ll dy[4]={0,1,0,-1};
ld b[h][w][4][4];

void solve(){
    ll i,j,_,__;
    ll h,w,k;
    cin>>h>>w>>k;
    char ch;
    ll x1,y1,x2,y2;
    cin>>x1>>y1>>x2>>y2,--x1,--x2,--y1,--y2;
    ll a[h][w];
    rep(i,0,h){
        rep(j,0,w){
            cin>>ch;
            a[i][j]=(ch=='.');
            rep(_,0,4)rep(__,0,4)b[i][j][_][__]=inf;
        }
    }
    if(!a[x1][y1]||!a[x2][y2]){
        cout<<-1<<endl;
        return;
    }
    rep(i,0,4)rep(j,0,4)b[x1][y1][i][j]=0;
    set<pair<pair<ld,ll>,pll>> st;
    st.insert({{0,0},{x1,y1}});
    pll z;
    ld tmp,tmp2;
    ll x,y,dir;
    while(st.size()){
        auto it = st.begin();
        z=(*it).S,dir=(*it).F.S,tmp=(*it).F.F,tmp2=tmp;
        st.erase(it);
        rep(i,0,4){
            tmp=tmp2;
            x=z.F+dx[i],y=z.S+dy[i];
            if(x<0||y<0||x>h-1||y>w-1||!a[x][y]||b[x][y][i][dir]<inf)continue;
            if(dir==i){
                tmp+=1/(ld)k;
            }else{
                tmp=ceil(tmp);
                tmp+=1/(ld)k;
            }
            b[x][y][i][dir]=tmp;
            st.insert({{tmp,i},{x,y}});
        }
    }
    ll ans=inf;
    rep(i,0,4)rep(j,0,4)ans=min(ans,(ll)ceil(b[x2][y2][i][j]));
    if(ans==inf)ans=-1;
    cout<<ans<<endl;
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    ll T=1;
   // cin>>T;
    while(T--){
        solve();
    }
    return 0;
}




Compiler output:
a.cc:60:6: error: 'h' was not declared in this scope
   60 | ld b[h][w][4][4];
      |      ^
a.cc:60:9: error: 'w' was not declared in this scope
   60 | ld b[h][w][4][4];
      |         ^
a.cc: In function 'void solve()':
a.cc:74:34: error: 'b' was not declared in this scope
   74 |             rep(_,0,4)rep(__,0,4)b[i][j][_][__]=inf;
      |                                  ^
a.cc:81:25: error: 'b' was not declared in this scope
   81 |     rep(i,0,4)rep(j,0,4)b[x1][y1][i][j]=0;
      |                         ^
a.cc:94:50: error: 'b' was not declared in this scope
   94 |             if(x<0||y<0||x>h-1||y>w-1||!a[x][y]||b[x][y][i][dir]<inf)continue;
      |                                                  ^
a.cc:101:13: error: 'b' was not declared in this scope
  101 |             b[x][y][i][dir]=tmp;
      |             ^
a.cc:106:46: error: 'b' was not declared in this scope
  106 |     rep(i,0,4)rep(j,0,4)ans=min(ans,(ll)ceil(b[x2][y2][i][j]));
      |                                              ^