Cod sursa(job #3326906)

Utilizator parrot279Sofi Tudose parrot279 Data 1 decembrie 2025 10:59:13
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>

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

int rmq[10][501][501], n, m, lg[501];

int main()
{
    fin>>n>>m;
    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)
            {
                int l = 1<<(p-1);
                rmq[p][i][j] = max({rmq[p-1][i][j], rmq[p-1][i+l][j], rmq[p-1][i][j+l], rmq[p-1][i+l][j+l]});
            }
        }
    }
    for(int i = 2; i <= n; ++i)
        lg[i] = lg[i/2] + 1;

    while(m--)
    {
        int i, j, k;
        fin>>i>>j>>k;
        int p = lg[k], l = (1<<p);
        fout<<max({rmq[p][i][j], rmq[p][i+k-l][j], rmq[p][i][j+k-l], rmq[p][i+k-l][j+k-l]})<<"\n";
    }

    return 0;
}