Cod sursa(job #2903335)

Utilizator ctimburCristina T ctimbur Data 17 mai 2022 14:13:08
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <cmath>
 
using namespace std;
const int NMAX = 501;
const int MAXN = 9;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
 
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;
}