Cod sursa(job #863488)
Utilizator | Data | 23 ianuarie 2013 21:01:57 | |
---|---|---|---|
Problema | Rj | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.94 kb |
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
char a[101][101];
int i,j,t[101][101],dl[]={-1,0,1,0,-1,-1,1,1},dc[]={0,1,0,-1,-1,1,-1,1},cs,ls,c,l,p,n,m;
void drum(int l,int c,int pas)
{
int li,ci,j,i,q,sw,pmin;
for(i=0;i<8;i++)
{
li=l+dl[i];
ci=c+dc[i];
if(li<=n&&li>=1 && ci<=m&&ci>=1)
if(a[li][ci]==' ')
t[li][ci]=pas;
if(a[li][ci]=='J'&&pas%2==0)
{
p=pas/2;
if(p<pmin)
{
sw=1;
pmin=p;
for(q=1;q<=n&&sw;q++)
for(j=1;j<=m&&sw;j++)
if(t[q][j]==p)
{
sw=0;
ls=q;
cs=j;
}
}
else if(p==pmin)
{ sw=1;
for(q=1;q<=n&&sw;q++)
for(j=1;j<=m&&sw;j++)
if(t[q][j]==p&&cs>j)
{
sw=0;
ls=q;
cs=j;
}
}
}
else drum(li,ci,pas+1);
t[li][ci]=0;
}
}
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{f>>a[i][j];
if(a[i][j]=='R') {l=i;c=j;}
}
// cout<<l<<" "<<c<<" "<<(sizeof(a)+sizeof(t))/1024<<"kb";
drum(l,c,2);
g<<ls<<" "<<cs<<" "<<p;
return 0;
}