Cod sursa(job #1130762)

Utilizator crytek33kocolino crytek33 Data 28 februarie 2014 15:29:15
Problema Castel Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
using namespace std;
ifstream f("castel.in");
ofstream g("castel.out");
long long a[151][151],i,j,x,y,n,m,b[151][151],c[151][151],d[151],k,l,o,p,ok;
int main()
{f>>x>>y>>n;

for(i=1;i<=x;i++)
    for(j=1;j<=y;j++)f>>a[i][j];

    m=1;
for(i=1;i<=x;i++)
    for(j=1;j<=y;j++){b[i][j]=m; m=m+1;}

ok=1;
for(i=1;i<=x&&ok;i++)
    for(j=1;j<=y;j++){if(b[i][j]==n){c[i][j]=1; d[1]=n; ok=0;}}

o=1;

k=1; p=1;
while(k!=0)
{k=0;
for(i=1;i<=x;i++)
    for(j=1;j<=y;j++)if(c[i][j]==1)
{if(c[i][j+1]==0&&a[i][j+1]!=0)
{ok=1; for(l=1;l<=o&&ok;l++)if(a[i][j+1]==d[l]){ok=0; o++; d[o]=b[i][j+1];}
if(ok==0){c[i][j+1]=1; k++;p++;}}

if(c[i][j-1]==0&&a[i][j-1]!=0)
{ok=1; for(l=1;l<=o&&ok;l++)if(a[i][j-1]==d[l]){ok=0; o++; d[o]=b[i][j-1];}
if(ok==0){c[i][j-1]=1; k++;p++;}}

if(c[i+1][j]==0&&a[i+1][j]!=0)
{ok=1; for(l=1;l<=o&&ok;l++)if(a[i+1][j]==d[l]){ok=0; o++; d[o]=b[i+1][j];}
if(ok==0){c[i+1][j]=1; k++;p++;}}

if(c[i-1][j]==0&&a[i-1][j]!=0)
{ok=1; for(l=1;l<=o&&ok;l++)if(a[i-1][j]==d[l]){ok=0; o++; d[o]=b[i-1][j];}
if(ok==0){c[i-1][j]=1; k++;p++;}}
}}

g<<p;

return 0;}