Pagini recente » Cod sursa (job #2057566) | Cod sursa (job #2784789) | Cod sursa (job #2960043) | Cod sursa (job #1285386) | Cod sursa (job #2862632)
#include <bits/stdc++.h>
using namespace std;
const int dim=309,inf=1e9;
ifstream fin("matrice2.in");
ofstream fout("matrice2.out");
int dx[]={0,1,-1,0};
int dy[]={1,0,0,-1};
int n,q;
int v[dim][dim];
bool viz[dim][dim];
bool in(int x,int y){
return 1<=x&&x<=n&&1<=y&&y<=n;
}
void sterge(){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
viz[i][j]=false;
}
}
}
void Fill(int x,int y,int k){
if(v[x][y]>=k){
viz[x][y]=true;
for(int l=0;l<4;l++){
int xnou=x+dx[l],ynou=y+dy[l];
if(in(xnou,ynou)&&!viz[xnou][ynou]){
Fill(xnou,ynou,k);
}
}
}
}
signed main(){
fin>>n>>q;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
fin>>v[i][j];
}
}
while(q--){
int x1,y1,x2,y2;
fin>>x1>>y1>>x2>>y2;
int st=1,dr=1000000,retine=0;
while(st<=dr){
int mij=(st+dr)/2;
Fill(x1,y1,mij);
if(viz[x2][y2]){
retine=mij;
st=mij+1;
}else{
dr=mij-1;
}
sterge();
}
fout<<retine<<'\n';
}
}