Cod sursa(job #3274406)

Utilizator PetruApostolApostol Mihnea Petru PetruApostol Data 6 februarie 2025 17:35:29
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <math.h>
using namespace std;

ifstream cin("plantatie.in");
ofstream cout("plantatie.out");

int rmq[501][501][10];

int maxa(int a,int b,int c,int d){
    return max(max(a,b),max(c,d));
}

int main()
{
    int n,m,i,j,put,put1,a,b,l;
    cin>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            cin>>rmq[i][j][0];
    for(put=1;put<=9;put++){
        put1=(1<<put);
        for(i=1;i<=n-put1+1;i++)
            for(j=1;j<=n-put1+1;j++)
                rmq[i][j][put]=maxa(rmq[i][j][put-1],rmq[i+put1/2][j][put-1],rmq[i][j+put1/2][put-1],rmq[i+put1/2][j+put1/2][put-1]);
    }
    for(i=1;i<=m; i++){
        cin>>a>>b>>l;
        put=log2(l);
        cout<<maxa(rmq[a][b][put],rmq[a+l-(1<<(put))][b][put],rmq[a][b+l-(1<<(put))][put],rmq[a+l-(1<<(put))][b+l-(1<<(put))][put])<<"\n";
    }
    return 0;
}