Pagini recente » Cod sursa (job #765216) | Cod sursa (job #806810) | Cod sursa (job #1093737) | Cod sursa (job #545458) | Cod sursa (job #648662)
Cod sursa(job #648662)
#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,p1,p2,q1,q2,qq1,qq2;
int h2,codi[3000],codj[3000],w1,s,codi2[3000],codj2[3000];
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;
q1=i;
q2=j+1;
}
if (st[j]=='J') {
a[i][j+1]=1;
xi=i;
xj=j+1;
qq1=i;
qq2=j;
}
}
}
for(i=0; i<=n+1; i++)
for(j=0; j<=m+1; j++)
a2[i][j]=a[i][j];
p1=codi2[1];
p2=codj[1];
a2[p1][p2]=-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=33333;
a[q1][q2]=-8;
a[qq1][qq2+1]=-8;
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;
}