Pagini recente » Cod sursa (job #3231644) | Cod sursa (job #3231650)
#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
#include <climits>
using namespace std;
#define NMAX 505
#define MMAX 75005
int C[NMAX][NMAX][15], n, m;
int main(){
int i, j, t, lung, x, y, l, val;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
fin >> n >> m;
for(i = 1; i <= n; i++){
for(j = 1; j <= n; j++)
{
fin >> C[i][j][0];
}
}
lung = int(log2(n));
for (int x = 0; x < n; x++) {
for (int y = 0; y < n; y++) {
for (int size = 1; size <= lung; size++) {
if (x + size <= n && y + size <= n) {
// Calculate the maximum value in the submatrix
int maxVal = INT_MIN;
for (int i = x; i < x + size; i++) {
for (int j = y; j < y + size; j++) {
maxVal = max(maxVal, C[i][j][size-1]);
}
}
// Store the maximum value in the 3D array
C[x][y][size] = maxVal;
}
}
}
}
int rez, put;
for(i = 1; i <= m; i++)
{
fin >> x >> y >> l;
put = int(log2(l));
val = 1 << put;
int max1 = max(C[x][y][put], C[x - val + l][y][put]);
int max2 = max(C[x][y - val + l][put], C[x - val + l][y - val + l][put]);
rez = max(max1, max2);
fout << rez << "\n";
}
return 0;
}