Cod sursa(job #2890453)

Utilizator Katherine456719Swan Katherine Katherine456719 Data 15 aprilie 2022 17:06:27
Problema Plantatie Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
//Plantatie
#include <iostream>
#include <fstream>
using namespace std;
int n,m,x,y,l,k,len;
int a[100][505][505],lg[505];
int main(){
    ifstream fin("plantatie.in");
    ofstream fout("plantatie.out");
    fin >> n >> m;
    for(int i = 1;i <= n; ++i)
        for(int j = 1; j <= n; ++j)
            fin >> a[0][i][j];
    lg[1]=0;
    for(int i = 2; i<= n; ++i)
        lg[i] = lg[i/2] + 1;
    for(int p = 1 ,lat = 2;lat <= n; p++, lat*=2)
        for(int i = 1;i <= n - lat + 1; ++i)
            for(int j = 1; j <= n - lat + 1; ++j){
                int indexl2 = i + (lat >> 1);
                int indexc2 = j + (lat >> 1);
                a[p][i][j] = max(max(a[p - 1][i][j], a[p - 1][indexl2][j]),max(a[p - 1][i][indexc2], a[p - 1][indexl2][indexc2]));
            }
    for(int i = 1;i <= m; ++i) {
        fin >> x >> y >> l;
        k = lg[l];
        len = (1<<k);
        int x2 = x + l -len;
        int y2 = y + l -len;
        fout << max(max(a[k][x][y], a[k][x2][y]),max(a[k][x2][y], a[k][x2][y2])) << "\n";
    }
    return 0;
}