Cod sursa(job #2906501)

Utilizator AndreiBOTOBotocan Andrei AndreiBOTO Data 26 mai 2022 13:04:29
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

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

const int NMAX = 504;
const int MAXN=9;
int rmq[MAXN][NMAX][NMAX],prec[NMAX];

int main()
{
    int n,q,i,j,k,a,b,l,l2;
    fin>>n>>q;
    for(i=1;i<=n;i++)
        for (j=1;j<=n;j++)
            fin>>rmq[0][i][j];
    for (i=2;i<=n;i++)
        prec[i]=1+prec[(i>>1)];
    for (k=1;k<=prec[n];k++)
    {
        int lat=(1<<(k-1));
        for(i=lat;i<=n;i++)
            for (j=lat;j<=n;j++)
                rmq[k][i][j]=max(max(rmq[k-1][i][j],rmq[k-1][i][j-lat]),max(rmq[k-1][i-lat][j-lat],rmq[k-1][i-lat][j]));
    }
    while(q--)
    {
        fin>>a>>b>>l;
        a+=l-1;
        b+=l-1;
        l2=(1<<prec[l]);
        fout<<max(max(rmq[prec[l]][a-l+l2][b-l+l2],rmq[prec[l]][a][b-l+l2]),max(rmq[prec[l]][a][b],rmq[prec[l]][a-l+l2][b]))<<"\n";
    }
    return 0;
}