#55241: 全部分析分開來做


aaronpengfc@gmail.com (Peng Aaron)


#include<iostream>

using namespace std;

int main()
{
    int M, N, K, r, c, change = 0, gem = 1, score = 0, over = 0;
    cin>>M>>N>>K>>r>>c;

    int maze[M][N];
    for(int i = 0; i < M; i++)
    {
        for(int t = 0; t < N; t++)
        {
            cin>>maze[i][t];
        }
    }

    score = maze[r][c];
    maze[r][c]--;

    /*cout<<"maze\n";
    for(int i = 0; i < M; i++)
    {
        for(int t = 0; t < N; t++)
            cout<<maze[i][t]<<" ";
        cout<<"\n";
    }*/
    while(over==0)
    {
        if(change % 4 == 0)
        {
            c++;
            if(c > N -1)
            {
                c--;
                change++;
            }
            else if(maze[r][c] == 0)
            {
                over++;
                break;
            }

            else if(maze[r][c] == -1)
            {
                c--;
                change++;
            }
            else
            {
                score+=maze[r][c];
                maze[r][c]--;
                gem++;
                if(score%K==0)
            change++;
            }
        }
        else if(change % 4 == 1)
        {
            r++;
            if(r > M -1)
            {
                r--;
                change++;
            }
            else if(maze[r][c] == 0)
            {
                over++;
                break;
            }

            else if(maze[r][c] == -1)
            {
                r--;
                change++;
            }
            else
            {
                score+=maze[r][c];
                maze[r][c]--;
                gem++;
                if(score%K==0)
            change++;
            }
        }
        else if(change % 4 == 2)
        {
            c--;
            if(c < 0)
            {
                c++;
                change++;
            }
            else if(maze[r][c] == 0)
            {
                over++;
                break;
            }

            else if(maze[r][c] == -1)
            {
                c++;
                change++;
            }
            else
            {
                score+=maze[r][c];
                maze[r][c]--;
                gem++;
                if(score%K==0)
            change++;
            }
        }
        else if(change % 4 == 3)
        {
            r--;
            if(r < 0)
            {
                r++;
                change++;
            }
            else if(maze[r][c] == 0)
            {
                over++;
                break;
            }

            else if(maze[r][c] == -1)
            {
                r++;
                change++;
            }
            else
            {
                score+=maze[r][c];
                maze[r][c]--;
                gem++;
                if(score%K==0)
            change++;
            }
        }

        /*cout<<"maze\n";
        for(int i = 0; i < M; i++)
        {
            for(int t = 0 ; t < N; t++)
            {
                cout<<maze[i][t]<<" ";
            }
            cout<<"\n";
        }
        cout<<"score "<<score<<"\n";
        cout<<"gem "<<gem<<"\n";
        cout<<"("<<r<<","<<c<<")\n";
        cout<<"change "<<change<<"\n";*/
    }
    cout<<gem;
    return 0;
}