Cod sursa(job #3294126)

Utilizator Vlad10Vlad Negut Vlad10 Data 16 aprilie 2025 10:44:56
Problema Plantatie Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("plantatie.in");
ofstream fout ("plantatie.out");
int rmq[501][501][11];
int log[501];
int n,q;
int main()
{
    fin>>n>>q;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            fin>>rmq[i][j][0];
        }
    }
    log[1]=0;
    for(int i=2;i<=n;i++){
        log[i]=log[i/2]+1;
    }
    //implementam
    for(int l=1;l<=log[n];l++){
        int p=(1<<(l-1));
        for(int i=(1<<l);i<=n;i++){
            for(int j=(1<<l);j<=n;j++){
                rmq[i][j][l]=max(max(rmq[i-p][j][l-1], rmq[i-p][j-p][l-1]), max(rmq[i][j][l-1],rmq[i][j-p][l-1]));
            }
        }
    }
    for(int i=1;i<=q;i++){
        int l,c,d;
        fin>>l>>c>>d;
        int g=log[d];
        int p=g;
        fout<<max(max(rmq[l+p-1][c+p-1][g],rmq[l+d-1][c+p-1][g]),max(rmq[l+p-1][c+d-1][g],rmq[l+d-1][c+d-1][g]))<<'\n';
    }
    return 0;
}