Cod sursa(job #2862632)

Utilizator BalasaRaduBalasa Radu BalasaRadu Data 5 martie 2022 17:02:00
Problema Matrice 2 Scor 35
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#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';
    }
}