Cod sursa(job #1808907)

Utilizator dragos231456Neghina Dragos dragos231456 Data 18 noiembrie 2016 13:00:40
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.95 kb
#include <iostream>
#include <fstream>
/*Din vazduh cumplita iarna cerne norii de zapada
Lungi troiene calatoare adunate-n cer gramada
fulgii zbor, plutesc in aer ca un roi de fluturi albi
Raspandind fiori de gheata pe ai tarii umeri dalbi.

Ziua ninge Noaptea ninge Dimineata ninge iara!
Ca o zale argintie se imbraca mandra tara.
Soarele rotund si palid se prevede printre nori
Ca un vis de tinerete pintre anii trecatori.

Tot e alb, pe camp, pe dealuri, imprejur in departare
Ca fantasme albe, plopii insirati se perd in zare
Si pe-ntinderea pustie, fara urme fara drum
Se vad satele perdute sub clabuci albii de fum.

Dar ninsoarea inceteaza norii fug doritul soare
Straluceste si dizmiarda oceanul de ninsoare
Iat-o sanie usoara care trece printre vai...
In vazduh voios rasuna, clinchete de zurgalai... */
using namespace std;
ifstream f("rj.in"); ofstream g("rj.out");
string s;
struct{short x,y;} v[10003];
short h,u,a[102][102],n,m,b=1,k=0,i,j,d_l[4]={0,-1,0,1}, d_c[4]={-1,0,1,0};
int verif(short h, short u)
{
    if(a[h][u]=='0' && h>=1 && h<=n && u>=1 && u<=m) return 1;
    else return 0;
}
int main()
{
    f>>n>>m; getline(f,s);
    for(i=1;i<=n;++i)
    {
        getline(f,s);
        for(j=0;j<m;++j)
        {
            if(s[j]=='X') a[i][j+1]=-1;
            else if(s[j]=='R' || s[j]=='J')
            {
                ++k;
                v[k].x=i;
                v[k].y=j+1;
            }
        }
    }
    while(b<=k)
    {
        i=v[b].x;
        j=v[b].y;
        for(int c=0;c<=3;++c)
        {
            h=d_l[c]+i;
            u=d_c[c]+j;
            if(verif(h,u))
            {
                a[h][u]=a[i][j]+1;
                ++k;
                v[k].x=h;
                v[k].y=u;
            }
        }
        ++b;
    }
    for(i=1;i<=n;++i)
    {
        for(int j=1;j<=m;++j)
        {
            cout<<a[i][j]<<' ';
        }
        cout<<endl;
    }
    return 0;
}