Cod sursa(job #3352855)

Utilizator RaresPanuPanu Rares RaresPanu Data 2 mai 2026 11:14:51
Problema Plantatie Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int rmq[9][501][501];
int lg[501];

int main() {
    int n, m;
    fin >> n >> m;
    for (int i=1;i<=n;i++) {
        for (int j=1;j<=n;j++) {
            fin>>rmq[0][i][j];
            //cout<<rmq[0][i][j]<<" ";
        }
        //cout<<"\n";
    }
    //cout<<"\n\n";
    lg[1]=0;
    for (int i=2;i<=n;i++) {
        lg[i]=lg[i]/2+1;
    }
    for (int i=1;(1<<i)<=n;i++) {
        for (int j=1;j<=n;j++) {
            for (int k=1;k<=n;k++) {
                int aux=1<<(i-1);
                rmq[i][j][k]=max(max(max(rmq[i-1][j][k],rmq[i-1][j][k+aux]),rmq[i-1][j+aux][k]),rmq[i-1][j+aux][k+aux]);
                //cout<<rmq[i][j][k]<<" ";
            }
           // cout<<"\n";
        }
        //cout<<"\n\n";
    }
    for (int i=1;i<=m;i++) {
        int lin,col,d;
        fin>>lin>>col>>d;
        int l=lg[d];
        int diff=d-(1<<l);
        fout<<max(max(max(rmq[l][lin][col],rmq[l][lin+diff][col]),rmq[l][lin][col+diff]),rmq[l][lin+diff][col+diff])<<"\n";
    }
    return 0;
}