Cod sursa(job #3340222)

Utilizator abetAlbert Voiculescu abet Data 12 februarie 2026 20:19:03
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int r[20][505][505], lg[505];
int maxim(int a, int b, int c, int d){
    int gr=0;
    gr=max(a, b);
    gr = max(gr, c);
    gr=max(gr,d);
    return gr;
}
int main()
{
    int n, q, a, b, let;
    in>>n>>q;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            in>>r[0][i][j];
        }
    }
    for(int p=1, lat=2;lat<=n;p++, lat*=2){
        for(int i1=1;i1<=n-lat+1;i1++){
            for(int j1=1;j1<=n-lat+1;j1++){
                int i2 = i1 + (lat>>1);
                int j2 = j1 + (lat>>1);
                r[p][i1][j1] = maxim(r[p-1][i1][j1], r[p-1][i2][j1], r[p-1][i1][j2], r[p-1][i2][j2]);
            }
        }
    }
    lg[1]=0;
    for(int i=2;i<=n;i++){
        lg[i]=lg[i/2]+1;
    }
    while(q--){
        in>>a>>b>>let;
        int k = lg[let];
        int len = 1<<k;
        int i2 = a+let-len;
        int j2 = b+let-len;
        out<<max(max(r[k][a][b],r[k][a][j2]), max(r[k][i2][b],r[k][i2][j2]))<<"\n";
    }
    return 0;
}