Pagini recente » Cod sursa (job #2651820) | Cod sursa (job #260570) | Cod sursa (job #1642819) | Cod sursa (job #600602) | Cod sursa (job #2587901)
#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
struct ura {
int l, c;
}coada[10001];
int rom[103][103], jul[103][103];
int dirL[8]={-1, -1, -1, 0, 1, 1, 1, 0};
int dirC[8]={-1, 0, 1, 1, 1, 0, -1, -1};
char s[103];
int main () {
int n, m, i, j, inc, sf, lpr, cpr, lpj, cpj, k, lin, col, tmin;
char c;
fin>>n>>m;
///bordarea matricelor
for(i=0; i<=n+1; i++) {
rom[i][0]=rom[i][m+1]=-1;
jul[i][0]=jul[i][m+1]=-1;
}
for(i=0; i<=m+1; i++) {
rom[0][i]=rom[n+1][i]=-1;
jul[0][i]=jul[n+1][i]=-1;
}
fin.get(c);
///formarea matricelor
for(i=1; i<=n; i++) {
fin.getline(s,103);
for(k=1; k<=m; k++) {
if(s[k-1]=='X') {
rom[i][k]=-1;
jul[i][k]=-1;
}
if(s[k-1]=='R') {
rom[i][k]=1;
jul[i][k]=0;
lpr=i;
cpr=k;
}
if(s[k-1]=='J') {
rom[i][k]=0;
jul[i][k]=1;
lpj=i;
cpj=k;
}
if(s[k-1]==' ') {
rom[i][k]=0;
jul[i][k]=0;
}
}
}
///lee romeo
inc=sf=1;
coada[inc].l=lpr;
coada[inc].c=cpr;
while(inc<=sf) {
for(i=0; i<8; i++) {
lin=coada[inc].l+dirL[i];
col=coada[inc].c+dirC[i];
if(rom[lin][col]==0) {
sf++;
coada[sf].l=lin;
coada[sf].c=col;
rom[lin][col]=1+rom[coada[inc].l][coada[inc].c];
}
}
inc++;
}
///lee julieta
inc=sf=1;
coada[inc].l=lpj;
coada[inc].c=cpj;
while(inc<=sf) {
for(i=0; i<8; i++) {
lin=coada[inc].l+dirL[i];
col=coada[inc].c+dirC[i];
if(jul[lin][col]==0) {
sf++;
coada[sf].l=lin;
coada[sf].c=col;
jul[lin][col]=1+jul[coada[inc].l][coada[inc].c];
}
}
inc++;
}
///calculez timpul minim
tmin=200000000;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
if(rom[i][j]==jul[i][j] && rom[i][j]!=-1 && rom[i][j]!=0)
if(rom[i][j]<tmin) {
tmin=rom[i][j];
lin=i;
col=j;
}
fout<<tmin<<" "<<lin<<" "<<col;
/*for(i=1; i<=n; i++) {
for(j=1; j<=m; j++)
fout<<rom[i][j]<<" ";
fout<<endl;
}*/
return 0;
}