Cod sursa(job #3297743)

Utilizator VanillaSoltan Marian Vanilla Data 23 mai 2025 17:50:54
Problema Plantatie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
using namespace std;

const int maxn = 505;

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

int main(){
    ifstream cin("plantatie.in");
    ofstream cout("plantatie.out");
    int n, qr;
    cin >> n >> qr;
    for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++) {
            cin >> rmq[0][i][j];
        }

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

    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++){
                int x = i + (1 << (p-1));
                int y = j + (1 << (p-1));
                rmq[p][i][j]=max({rmq[p-1][i][j], rmq[p-1][x][j], rmq[p-1][i][y], rmq[p-1][x][y]});
                // cout << rmq[p][i][j] << "\n";
            }
    
    for (int k = 0; k < qr; k++){
        int x,y,lat;
        cin >> x >> y >> lat;
        int len = (1<<(lg[lat]));
        int x2=x+lat-len, y2 = y+lat-len;
        int res = max({
            rmq[lg[len]][x][y],
            rmq[lg[len]][x2][y],
            rmq[lg[len]][x][y2], 
            rmq[lg[len]][x2][y2]
        });
        cout << res << "\n";
    }

}