Cod sursa(job #2836899)

Utilizator DauCuDalta43Diaconu Razvan DauCuDalta43 Data 21 ianuarie 2022 09:19:28
Problema Matrice 2 Scor 15
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("matrice2.in");
ofstream fout("matrice2.out");

struct Elem
{
    int cost,x,y;
    bool operator<(const Elem A)const
    {
        return cost<A.cost;
    }
};

int n,m;
int a[305][305];
int dx[]={0,0,-1,1};
int dy[]={-1,1,0,0};

void Bordare()
{
    for(int i=0;i<=n+1;i++)
        a[i][0]=a[i][n+1]=a[0][i]=a[n+1][i]=2e9;
}

void Skema(int x1,int y1,int x2,int y2)
{
    int x,y;
    bitset<305>viz[305];
    int cost_min=min(a[x1][y1],a[x2][y2]);
    priority_queue<Elem>q;
    q.push({a[x1][y1],x1,y1});
    while(q.top().x!=x2||q.top().y!=y2)
    {
        x=q.top().x;
        y=q.top().y;
        if(abs(x-x2)+abs(y-y2)==1)break;
        cout<<x<<" "<<y<<"\n\n";
        viz[x][y]=1;
        cost_min=min(cost_min,a[x][y]);
        q.pop();
        for(int k=0;k<4;k++)
        {
            int i=x+dx[k];
            int j=y+dy[k];
            if(!viz[i][j]&&a[i][j]!=2e9)
            {
                cout<<i<<" "<<j<<"\n";
                q.push({a[i][j],i,j});
            }
        }
        cout<<"\n";
    }
    fout<<cost_min<<"\n";
}

int main()
{
    int i,j;
    fin>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            fin>>a[i][j];
    Bordare();
    while(m--)
    {
        int x1,x2,y1,y2;
        fin>>x1>>y1>>x2>>y2;
        Skema(x1,y1,x2,y2);
    }
    return 0;
}