Cod sursa(job #3305888)

Utilizator alex.iovita.23@gmail.comIovita Alexandru [email protected] Data 5 august 2025 21:58:57
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include<bits/stdc++.h>

using namespace std;

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


int n , m , r[10][502][502] , lat , p;
int E[501];

int main(){
    fin >> n >> m;

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

    for(p = 1 , lat = 2 ; lat <= n ; lat *= 2 , p++){
        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] = max(max(r[p - 1][i1][j1] , r[p - 1][i2][j2]),
                                       max(r[p - 1][i1][j2] , r[p - 1][i2][j1]));
            }
        }
    }

    E[1] = 0;
    for(int i = 2 ; i <= n ; i++)
        E[i] = 1 + E[i / 2];

    for(int k = 1 ; k <= m ; k++){
        int i , j , Lat;
        fin >> i >> j >> Lat;
        int e = E[Lat];
        int len = (1 << e);
        int i2 = Lat - len + i;
        int j2 = Lat - len + j;
        fout << max(max(r[e][i][j] , r[e][i2][j2]) ,
                    max(r[e][i][j2] , r[e][i2][j])) << '\n';
    }
}