Pagini recente » Cod sursa (job #1370463) | Cod sursa (job #2170029) | Cod sursa (job #2101778) | Cod sursa (job #2593712) | Cod sursa (job #418753)
Cod sursa(job #418753)
#include<fstream>
#include<queue>
#define dmax 305
using namespace std;
ifstream in("matrice2.in");
ofstream out("matrice2.out");
int n,q,a,b,c,d,mat[dmax][dmax],sol[dmax][dmax];
const int dx[]={0,1,0,-1};
const int dy[]={1,0,-1,0};
struct pas
{ int x;
int y;
int m;
};
queue<struct pas> cd;
int bune(int i,int j)
{ return (i>0 && i<=n && j>0 && j<=n);
}
void solve()
{ int ii,jj,k,i,j,nou;
pas w,crt;
w.x=a;
w.y=b;
w.m=mat[a][b];
sol[a][b]=mat[a][b];
cd.push(w);
while(!cd.empty() )
{ crt=cd.front();
cd.pop();
for(k=0;k<4;k++)
{ ii=crt.x+dx[k];
jj=crt.y+dy[k];
if(bune(ii,jj) )
{ if(sol[ii][jj]==0)
{ sol[ii][jj]=min(crt.m,mat[ii][jj]);
w.x=ii;
w.y=jj;
w.m=sol[ii][jj];
cd.push(w);
}
else
{ nou=min(crt.m,mat[ii][jj]);
if(nou > sol[ii][jj])
{ sol[ii][jj]=nou;
w.x=ii;
w.y=jj;
w.m=sol[ii][jj];
cd.push(w);
}
}
}
}
}
out<<sol[c][d]<<'\n';
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
sol[i][j]=0;
cd.empty();
}
int main()
{ int i,j;
in>>n>>q;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
in>>mat[i][j];
for(;q;q--)
{ in>>a>>b>>c>>d;
solve();
}
in.close();
out.close();
return 0;
}