Cod sursa(job #3355077)

Utilizator M132M132 M132 M132 Data 21 mai 2026 18:17:23
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <bits/stdc++.h>

using namespace std;

ifstream F ("plantatie.in");
ofstream G ("plantatie.out");

const int nmax = 501;
int rmq[nmax][nmax][11];
int lg[nmax];
int n, q;

int main()
{
    F >> n >> q;
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= n; j++)
            F >> rmq[i][j][0];
    }
    lg[1] = 0;
    for(int i = 2; i <= n; i++)
        lg[i] = lg[i / 2] + 1;
    for(int l = 1; l <= lg[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;
        F >> l >> c >> d;
        int p = (1 << lg[d]);
        int g = lg[d];
        G << 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;
}