Cod sursa(job #3161324)

Utilizator Robert_NicuNicu Robert Cristian Robert_Nicu Data 26 octombrie 2023 17:16:26
Problema Plantatie Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>
#define log h
#define DIM 501
using namespace std;

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

int n, query, x, y, x2, y2, len, leni, lenj, lat;
int i, j, p;
int rmq[10][DIM][DIM], log[DIM];

int main(){
    fin>>n>>query;
    for(i=1; i<=n; i++)
        for(j=1; j<=n; j++)
            fin>>rmq[0][i][j];

    for(i=2; (1<<i)<=n; i++)
        log[i]=log[i/2]+1;

    for(p=1; (1<<p)<=n; p++)
        for(i=1; i+(1<<(p-1))<=n; i++)
            for(j=1; j+(1<<(p-1))<=n; j++){
                leni=i+(1<<(p-1));
                lenj=j+(1<<(p-1));
                rmq[p][i][j]=max(max(rmq[p-1][i][j], rmq[p-1][leni][j]), max(rmq[p-1][i][lenj], rmq[p-1][leni][lenj]));
            }
    while(query--){
        fin>>x>>y>>lat;
        len=(1<<(log[lat]));
        x2=x+lat-len;
        y2=y+lat-len;
        fout<<max(max(rmq[log[len]][x][y], rmq[log[len]][x2][y]), max(rmq[log[len]][x][y2], rmq[log[len]][x2][y2]))<<"\n";
    }

}