Cod sursa(job #2900719)

Utilizator T_george_TGeorge Teodorescu T_george_T Data 11 mai 2022 23:28:19
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
const int NMAX=501;
int n,m,v[NMAX],rmq[10][NMAX][NMAX],lg[NMAX];
int main()
{
    in>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            in>>rmq[0][i][j];
    for(int i=2;i<=n;i++)
        lg[i]=lg[i>>1]+1;
    for(int p=1;p<=8;p++)
        for(int i=1;i+(1<<(p-1))-1<=n;i++)
            for(int j=1;j+(1<<(p-1))-1<=n;j++)
                rmq[p][i][j]=max(max(rmq[p-1][i][j], rmq[p-1][i][j+(1<<(p-1))]),
                                 max(rmq[p-1][i+(1<<(p-1))][j], rmq[p-1][i+(1<<(p-1))][j+(1<<(p-1))]));
    int i,j,k;
    for(int q=1;q<=m;q++){
        in>>i>>j>>k;
        int p=lg[k];
        out<<max(max(rmq[p][i][j],rmq[p][i][j+k-(1<<p)]),max(rmq[p][i+k-(1<<p)][j],rmq[p][i+k-(1<<p)][j+k-(1<<p)]))<<"\n";
    }


    return 0;
}