Cod sursa(job #3359006)

Utilizator Zeno1789Zeno Ciuca Zeno1789 Data 22 iunie 2026 20:33:33
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <algorithm>
using namespace std;

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

int rmq[10][505][505],lg[505];

int main() {
    int n,m;
    cin>>n>>m;
    lg[1]=0;
    for (int i=2; i<=n; ++i) {
        lg[i]=lg[i/2]+1;
    }
    for (int i=1; i<=n; ++i) {
        for (int j=1; j<=n; ++j) {
            cin>>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) {
                rmq[p][i][j]=max({rmq[p-1][i][j],rmq[p-1][i+(1<<(p-1))][j],rmq[p-1][i][j+(1<<(p-1))],rmq[p-1][i+(1<<(p-1))][j+(1<<(p-1))]});
            }
        }
    }
    for (int i=0; i<m; ++i) {
        int r,c,k;
        cin>>r>>c>>k;
        int p=lg[k];
        int ans=max({rmq[p][r][c],rmq[p][r+k-(1<<p)][c],rmq[p][r][c+k-(1<<p)],rmq[p][r+k-(1<<p)][c+k-(1<<p)]});
        cout<<ans<<"\n";
    }
    return 0;
}