Cod sursa(job #3361388)

Utilizator ililogIlinca ililog Data 23 iulie 2026 17:41:08
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<iostream>
#include<fstream>
using namespace std;
#define NMAX 501

ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n, q;
int rmq[10][NMAX][NMAX];
int Log2[NMAX];

int main()
{
    fin >> n;
    fin >> q;
    Log2[1] = 0;
    for (int i = 2; i<NMAX; i++) {
        Log2[i] = Log2[i/2]+1;
    }
    for (int i = 1; i<=n; i++) {
        for (int j = 1; j<=n; j++) {
            fin >> rmq[0][i][j];
        }
    }
    
    for (int p = 1; (1<<p)<=n; p++) {
        for (int i = 1; i+(1<<p)-1<=n; i++) {
            for (int j = 1; j+(1<<p)-1<=n; j++) {
                rmq[p][i][j] = max(max(max(rmq[p-1][i][j], rmq[p-1][i+(1<<(p-1))][j]),
                                rmq[p-1][i][j+(1<<(p-1))]), rmq[p-1][i+(1<<(p-1))][j+(1<<(p-1))]);
            }
        }
    }

    while(q--) {
        int lin, col, k;
        fin >> lin >> col >> k;
        int e = Log2[k];

        fout << max(max(max(rmq[e][lin][col], rmq[e][lin+k-(1<<e)][col]), rmq[e][lin][col+k-(1<<e)]), rmq[e][lin+k-(1<<e)][col+k-(1<<e)]) << '\n';
    }
    return 0;
}