Cod sursa(job #3229804)

Utilizator JurchiJurcut Raul Gabriel Jurchi Data 17 mai 2024 16:30:04
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>
#define DIM 502

using namespace std;

ifstream f("plantatie.in");
ofstream g("plantatie.out");

int n,m,lat,L,len,k;
int r[10][DIM][DIM];
int E[DIM];

int main()
{
    f>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            f>>r[0][i][j];
    E[1]=0;
    for(int i=2;i<=n;i++)
        E[i]=1+E[i/2];
    for(int p=1,lat=2;lat<=n;lat*=2,p++)
        for(int i1=1;i1<=n-lat+1;i1++)
            for(int j1=1;j1<=n-lat+1;j1++)
            {
                int i2=i1+lat/2;
                int j2=j1+lat/2;
                r[p][i1][j1]=max(max(r[p-1][i1][j1],r[p-1][i1][j2]),max(r[p-1][i2][j1],r[p-1][i2][j2]));
            }
    for (;m;m--){
        int i1,i2,j1,j2;
        f>>i1>>j1>>L;
        k = E[L];
        len = (1<<k); /// cea mai mare putere de 2 <= latura
                        /// patratului de la interogare
        i2 = i1+L-len;
        j2 = j1+L-len;
        g<<max(max(r[k][i1][j1],r[k][i1][j2]),max(r[k][i2][j1],r[k][i2][j2]))<<"\n";
    }
    return 0;
}