Pagini recente » Cod sursa (job #2157041) | Cod sursa (job #2141484) | Cod sursa (job #1368644) | Cod sursa (job #352592) | Cod sursa (job #2790355)
#include <bits/stdc++.h>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int n, q, a[10][505][505], lg[505], x1, x2;
int main()
{
f >> n >> q;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
f >> a[0][i][j];
for(int i = 2; i <= n; i++)
lg[i] = lg[i / 2] + 1;
for(int k = 1; k <= lg[n]; k++)
for(int i = 1; i <= n - (1 << k) + 1; i++)
for(int j = 1; j <= n - (1 << k) + 1; j++){
x1 = max(a[k - 1][i + (1 << (k - 1))][j], a[k - 1][i + (1 << (k - 1))][j + (1 << (k - 1))]);
x2 = max(a[k - 1][i][j], a[k - 1][i][j + (1 << (k - 1))]);
a[k][i][j] = max(x1, x2);
}
int x, y, latura;
for(int i = 1; i <= q; i++){
f >> x >> y >> latura;
int k = lg[latura];
x1 = max(a[k][x][y], a[k][x][y + latura - (1 << k)]);
x2 = max(a[k][x + latura - (1 << k)][y], a[k][x + latura - (1 << k)][y + latura - (1 << k)]);
g << max(x1, x2) << '\n';
}
return 0;
}