Pagini recente » Monitorul de evaluare | Atasamentele paginii Profil Belu99 | Istoria paginii utilizator/stanrares | Istoria paginii utilizator/handidandi | Cod sursa (job #648045)
Cod sursa(job #648045)
#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int n,m,i,j,t,Ji,Jj,a[140][140],Ri,Rj,h1,wi,a2[140][140],xi,xj,pozi,pozj,rez;
int h2,codi[1000],codj[1000],w1,s,codi2[1000],codj2[1000];
string st;
void ex() {
h1=codi2[i];
h2=codj2[i];
s=a[h1][h2]+1;
if (a[h1][h2-1]==0) {
w1++;
a[h1][h2-1]=s;
codi[w1]=h1;
codj[w1]=h2-1;
}
if (a[h1][h2+1]==0) {
w1++;
a[h1][h2+1]=s;
codi[w1]=h1;
codj[w1]=h2+1;
}
if (a[h1-1][h2]==0) {
w1++;
a[h1-1][h2]=s;
codi[w1]=h1-1;
codj[w1]=h2;
}
if (a[h1+1][h2]==0) {
w1++;
a[h1+1][h2]=s;
codi[w1]=h1+1;
codj[w1]=h2;
}
if (a[h1+1][h2+1]==0) {
w1++;
a[h1+1][h2+1]=s;
codi[w1]=h1+1;
codj[w1]=h2+1;
}
if (a[h1-1][h2-1]==0) {
w1++;
a[h1-1][h2-1]=s;
codi[w1]=h1-1;
codj[w1]=h2-1;
}
if (a[h1+1][h2-1]==0) {
w1++;
a[h1+1][h2-1]=s;
codi[w1]=h1+1;
codj[w1]=h2-1;
}
if (a[h1-1][h2+1]==0) {
w1++;
a[h1-1][h2+1]=s;
codi[w1]=h1-1;
codj[w1]=h2+1;
}
}
int main() {
f>>n>>m;
f.get();
for(i=0; i<=n+1; i++) {
a[i][0]=-8;
a[i][m+1]=-8;
}
for(i=0; i<=m+1; i++) {
a[0][i]=-8;
a[n+1][i]=-8;
}
for(i=1; i<=n; i++) {
getline(f,st);
for(j=0; j<m; j++) {
if (st[j]=='X') a[i][j+1]=-8;
if (st[j]=='R') {
a[i][j+1]=1;
wi=1;
codi2[wi]=i;
codj2[wi]=j+1;
}
if (st[j]=='J') {
a[i][j+1]=1;
xi=i;
xj=j+1;
}
}
}
for(i=0; i<=n+1; i++)
for(j=0; j<=m+1; j++)
a2[i][j]=a[i][j];
a2[codi2[1]][codj2[1]]=-8;
while (wi>0) {
for(i=1; i<=wi; i++)
ex();
for(i=1; i<=w1; i++) {
codi2[i]=codi[i];
codj2[i]=codj[i];
}
wi=w1;
w1=0;
}
for(i=0; i<=n+1; i++)
for(j=0; j<=m+1; j++)
swap(a2[i][j],a[i][j]);
wi=1;
w1=0;
for(i=1; i<=2000; i++)
codi[i]=0,codj[j]=0,codi2[i]=0,codi2[i]=0;
codi2[1]=xi;
codj2[1]=xj;
while (wi>0) {
for(i=1; i<=wi; i++)
ex();
for(i=1; i<=w1; i++) {
codi2[i]=codi[i];
codj2[i]=codj[i];
}
wi=w1;
w1=0;
}
rez=333333;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
if (a[i][j]==a2[i][j]&&a[i][j]<rez&&a[i][j]>0) {
rez=a[i][j];
pozi=i;
pozj=j;
}
g<<pozi<<" "<<pozj<<" "<<rez;
f.close();
g.close();
return 0;
}