Cod sursa(job #3254243)

Utilizator Andrada_MincaAndrada Minca Andrada_Minca Data 6 noiembrie 2024 18:03:36
Problema Plantatie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
//
//  main.cpp
//  range minimum query
//
//  Created by Andrada Minca on 06.11.2024.
//

#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n,m,i,k,qi,l,qj,j,a[17][1005][1005];
int main()
{
    fin>>n>>m;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
        {fin>>a[0][i][j];}
    }
    for(int p=1,lat=2;lat<=n;p++,lat*=2)
    {
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n;j++)
            {
                a[p][i][j]=a[p-1][i][j];
                int i2=i+lat/2;
                int j2=j+lat/2;
                    a[p][i][j]=max(max(a[p-1][i2][j],a[p-1][i][j]),max(a[p-1][i][j2],a[p-1][i2][j2]));
            }
        }
        
    }
    int e[600];
    e[1]=0;
    for(i=2;i<=n;i++)e[i]=1+e[i/2];
    for(i=1;i<=m;i++)
    {
        fin>>qi>>qj>>l;
        k=e[l];
        int lat=(1<<k);
        int i2=qi+l-lat;
        int j2=qj+l-lat;
        fout<<a[0][1][2]<<" ";
        fout<<max(max(a[k][i2][j],a[k][i][j]),max(a[k][i][j2],a[k][i2][j2]))<<'\n';
    }
    return 0;
}