Cod sursa(job #3137620)

Utilizator Radu_MocanasuMocanasu Radu Radu_Mocanasu Data 13 iunie 2023 22:43:40
Problema Plantatie Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int t[505][505][10];
void preprocess(int n){
    for(int k = 1; (1 << k) <= n; k++){
        int x = (1 << (k - 1));
        for(int i = 1; i + (1 << k) - 1 <= n; i++)
            for(int j = 1; j + (1 << k) - 1 <= n; j++)
                t[i][j][k] = max(max(t[i][j][k - 1], t[i + x][j + x][k - 1]), max(t[i + x][j][k - 1], t[i][j + x][k - 1]));
    }
}
int rmq(int i, int j, int k){
    int l = log2(k);
    int p = (1 << l);
    return max(max(t[i][j][l], t[i + k - p][j + k - p][l]), max(t[i + k - p][j][l], t[i][j + k + p][l]));
}
int main()
{
    int n,m,i,j,x,y,k;
    fin >> n >> m;
    for(i = 1; i <= n; i++)
        for(j = 1; j <= n; j++) fin >> t[i][j][0];
    preprocess(n);
    for(i = 1; i <= m; i++){
        fin >> x >> y >> k;
        fout << rmq(x,y,k) << "\n";
    }
    return 0;
}