Cod sursa(job #3358657)

Utilizator rhyhrrhy1Dinca Matei rhyhrrhy1 Data 19 iunie 2026 01:20:37
Problema Plantatie Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
using namespace std;

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

int a[505][505];
int rmq[505][505][10];

int main(){
    int n,q;
    fin>>n>>q;

    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            fin>>a[i][j];

    int p=31-__builtin_clz(n);

    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            rmq[i][j][0]=a[i][j];

    for(int k=1;k<=p;k++){
        for(int i=0;i<n;i++){
            for(int j=0;j+(1<<k)<=n;j++){
                rmq[i][j][k]=max(rmq[i][j][k-1],
                                 rmq[i][j+(1<<(k-1))][k-1]);
            }
        }
    }

    while(q--){
        int x,y,l;
        fin>>x>>y>>l;
        x--;y--;

        int k=31-__builtin_clz(l);

        int best=0;

        for(int i=x;i<x+l;i++){
            best=max(best,
                max(rmq[i][y][k],
                    rmq[i][y+l-(1<<k)][k]));
        }

        fout<<best<<"\n";
    }
}