Cod sursa(job #3242841)

Utilizator alyymovButoi Alexandru alyymov Data 14 septembrie 2024 11:31:23
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
/*****************************************
       Butoi Alexandru - Gabriel
           Colegiul National
         "Iancu  de  Hunedoara"
*****************************************/ 

#include <fstream>
#include <algorithm>

using namespace std;

int rmq[9][502][502],i,j,k;
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
int main()
{
    int n, m;
    cin >> n >> m;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= n; j++){
            cin >> rmq[0][i][j];
        }
    }
    for(int k = 1; (1 << k) <= n; k++){
        for(int i = 1; i <= n - (1 << k)+ 1; i++){
            for(int j = 1; j <= n - (1 << k) + 1; j++){
                rmq[k][i][j] = max({rmq[k-1][i][j], rmq[k-1][i+(1 << (k-1))][j], rmq[k-1][i][j + (1<<(k-1))], rmq[k-1][i+(1<<(k-1))][j+(1<<(k-1))]});
            }
        }
    }
    for(int q = 0; q < m; q++){
        cin >> i >> j >> k;
        int p = 31 - __builtin_clz(k);
        int res = max({rmq[p][i][j],rmq[p][i+k-(1<<p)][j+k-(1<<p)],rmq[p][i+k-(1<<p)][j],rmq[p][i][j+k-(1<<p)]});
        cout << res << '\n';
    }
    return 0;
}