Cod sursa(job #2890486)

Utilizator pasare.franci@yahoo.comPasare Francisca [email protected] Data 15 aprilie 2022 17:50:17
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int n, m, e[505];
int rmq[10][505][505];
void ExponentMaxim()
{
    int i;
    e[1]=0;
    for(i=2; i<=n; i++)
        e[i]=1+e[i/2];
}

int main()
{
    int i, j, k, L, dk, lat, x;
    f>>n>>m;
    ExponentMaxim();
    for (i=1; i<=n; i++)
        for(j=1; j<=n; j++)
            f>>rmq[0][i][j];
    for(k=1; k<=e[n]; k++){
        dk=(1<<k);
        L=(1<<(k-1));
        for (i=1; i+L<=n; i++)
            for (j=1; j+L<=n; j++)
            rmq[k][i][j]=max({rmq[k-1][i][j], rmq[k-1][i][j+L], rmq[k-1][i+L][j], rmq[k-1][i+L][j+L]});
    }
    while(m--){
        f>>i>>j>>lat;
        if(lat==1){
            g<<rmq[0][i][j]<<"\n";
        }
        else{
            dk =(1<<e[lat]);
            k = e[lat];
            x = max({rmq[k][i][j], rmq[k][i][j+lat-dk], rmq[k][i+lat-dk][j], rmq[k][i+lat-dk][j+lat-dk]});
            g<<x<<"\n";
        }
    }
    return 0;
}