Cod sursa(job #3038336)

Utilizator stefypluStefan Plugaru stefyplu Data 27 martie 2023 11:25:30
Problema Plantatie Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
int rmq[503][503][10], start, st, dr, lung, lg2, n, q, val, putere; //rmq[X][Y][DIMENSIUNE 2^L]
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    cin>>n>>q;
    for (int i=1; i<=n; i++)
        for (int j=1; j<=n; j++)
            cin>>rmq[i][j][0];
    val=(int)log2(n);
    putere=1;
    for (int h=1; h<=val; h++, putere*=2)
        for (int i=1; i<=n-putere+1; i++)
            for (int j=1; j<=n-putere+1; j++)
            {
                rmq[i][j][h]=max(rmq[i+putere/2][j][h-1], rmq[i][j+putere/2][h-1]);
                rmq[i][j][h]=max(rmq[i][j][h], rmq[i][j][h-1]);
                rmq[i][j][h]=max(rmq[i][j][h], rmq[i+putere/2][j+putere/2][h-1]);
            }
    while (q--)
    {
        cin>>st>>dr>>lung;
        lg2=log2(lung);
        start=1;
        start=1<<(lg2-1);   
        cout<<max(max(rmq[st][dr][lg2], rmq[st+lung-start][dr][lg2]), max(rmq[st][dr+lung-start][lg2], rmq[st+lung-start][dr+lung-start][lg2]))<<'\n';
    }
    return 0;
}