Pagini recente » Cod sursa (job #351667) | Istoria paginii utilizator/marckasz | Monitorul de evaluare | Cod sursa (job #154831) | Cod sursa (job #2593379)
//
// main.cpp
// plantatie
//
// Created by Euebiu Rares on 03/04/2020.
// Copyright © 2020 Eusebiu Rares. All rights reserved.
//
#include <iostream>
#include "fstream"
#include "algorithm"
std::fstream in("plantatie.in", std::ios::in) ;
std::fstream out("plantatie.out", std::ios::out) ;
int rmq[10][501][501] ;
int LG[501] ;
int main() {
int n, m ;
in >> n >> m ;
LG[1] = 0 ;
for (int i = 2 ; i <= n ; i++) {
LG[i] = 1 + LG[i / 2] ;
}
for (int i = 1 ; i <= n ; i++) {
for (int j = 1 ; j <= n ; j++) {
in >> rmq[0][i][j] ;
}
}
int log = LG[n] ;
for (int i = 1 ; i <= log ; i++) {
int half = (1 << (i - 1)) ;
for (int j = (1 << i) ; j <= n ; j++) {
for (int k = (1 << i) ; k <= n ; k++) {
rmq[i][j][k] = std::max({rmq[i - 1][j][k], rmq[i - 1][j][k - half], rmq[i - 1][j - half][k], rmq[i - 1][j - half][k - half]}) ;
}
}
}
for ( ; m > 0 ; m--) {
int a, b, latura ;
in >> a >> b >> latura ;
a += latura - 1 ;
b += latura - 1 ;
int l = LG[latura] ;
int power = 1 << l ;
out << std::max({rmq[l][a][b], rmq[l][a][b - latura + power], rmq[l][a - latura + power][b], rmq[l][a - latura + power][b - latura + power]}) << '\n' ;
}
}