Pagini recente » Cod sursa (job #2576828) | Cod sursa (job #687836) | Cod sursa (job #1259573) | Cod sursa (job #134899) | Cod sursa (job #3037480)
#include <fstream>
#include <cmath>
#define NMAX 502
using namespace std;
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
int n, q, x;
int val, crt;
int lin, col, dim, ans;
int plant[10][NMAX][NMAX];
int main()
{
int i, j, k;
cin >> n >> q;
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
cin >> plant[0][i][j];
val = (int) log2(n);
for(k = 1; k <= val; k++)
{
crt = 1 << k;
for(i = 1; i <= n - crt + 1; i++)
for(j = 1; j <= n - crt + 1; j++)
plant[k][i][j] = plant[k - 1][i][j],
plant[k][i][j] = max(plant[k][i][j], plant[k - 1][i][j + crt / 2]),
plant[k][i][j] = max(plant[k][i][j], plant[k - 1][i + crt / 2][j]),
plant[k][i][j] = max(plant[k][i][j], plant[k - 1][i + crt / 2][j + crt / 2]);
//plant[k][i][j] = max(plant[k - 1][i][j], plant[k - 1][i][j + crt / 2 - 1], plant[k - 1][i + crt / 2 - 1][j], plant[k - 1][i + crt / 2 - 1][j + crt / 2 - 1]);
}
/*for(k = 0; k <= val; k++)
{
crt = 1 << k;
for(i = 1; i <= n - crt + 1; i++)
{
for(j = 1; j <= n - crt + 1; j++)
cout << plant[k][i][j] << ' ';
cout << '\n';
}
cout << '\n';
}*/
while(q--)
{
cin >> lin >> col >> dim;
val = (int) log2(dim);
crt = 1 << val;
x = plant[k - 1][lin][col],
x = max(x, plant[val][lin][col + crt / 2]),
x = max(x, plant[val][lin + crt / 2][col]),
x = max(x, plant[val][lin + crt / 2][col + crt / 2]);
cout << x << '\n';
}
return 0;
}