Cod sursa(job #2033953)

Utilizator popovicimariaginaPopovici Maria Gina popovicimariagina Data 7 octombrie 2017 12:07:18
Problema Kdrum Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.51 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream f("kdrum.in");
ofstream g("kdrum.out");
int main()
{
    int a[53][53];
    int n,m,k;
    int x1,x2,y1,y2;
    f>>n>>m>>k;
    f>>x1>>y1>>x2>>y2;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            f>>a[i][j];
    for(int i=0;i<=n+1;i++)
    {
        a[i][0]=0;
        a[i][m+1]=0;
    }
    for(int i=0;i<=m+1;i++)
    {
        a[0][i]=0;
        a[n+1][i]=0;
    }
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(a[i][j]!=0)a[i][j]=300;
    int coad[1000],ci,cj;
    ci=0;cj=1;
    coad[ci]=x1;coad[cj]=y1;
    a[x1][y1]=1;
    ci=ci+2;cj=cj+2;
    int ri=0,rj=1;
    do
    {
        int i=coad[ri-2],j=coad[rj-2];
        ri=ri+2;rj=rj+2;
        if(a[i-1][j]!=0&&a[i][j]+1<a[i-1][j])
        {
            a[i-1][j]=a[i][j]+1;
            coad[ci]=i-1;coad[cj]=j;
            ci=ci+2;cj=cj+2;
        }
        if(a[i+1][j]!=0&&a[i][j]+1<a[i+1][j])
        {
            a[i+1][j]=a[i][j]+1;
            coad[ci]=i+1;coad[cj]=j;
            ci=ci+2;cj=cj+2;
        }
        if(a[i][j-1]!=0&&a[i][j]+1<a[i][j-1])
        {
            a[i][j-1]=a[i][j]+1;
            coad[ci]=i;coad[cj]=j-1;
            ci=ci+2;cj=cj+2;
        }
        if(a[i][j+1]!=0&&a[i][j]+1<a[i][j+1])
        {
            a[i][j+1]=a[i][j]+1;
            coad[ci]=i;coad[cj]=j+1;
            ci=ci+2;cj=cj+2;
        }
    }
    while(a[x2][y2]==300);
    g<<a[x2][y2];
    return 0;
}