Pagini recente » Cod sursa (job #1869397) | Cod sursa (job #276672) | Cod sursa (job #295767) | Cod sursa (job #2485790) | Cod sursa (job #2751682)
#include <bits/stdc++.h>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int main(){
int N, M, r2d[505][505][12], p[505][505], log2[505];
int T;
f >> N >> T;
for (int i = 1; i <= N; ++i)
for (int j = 1; j <= N; ++j)
f >> p[i][j];
log2[0] = -1;
for (int i = 1; i <= N; ++i)
log2[i] = 1 + log2[i/2];
for(int i = 1; i <= N; ++i)
for (int j = 1; j <= N; ++j)
r2d[i][j][0] = p[i][j];
for(int k = 1; (1 << k) <= N; k++)
for(int i = 1; i + (1 << k) - 1 <= N; i++)
for(int j = 1; j + (1 << k) - 1 <= N; j++)
r2d[i][j][k] = max(max(r2d[i + (1 << (k - 1))][j][k - 1], r2d[i + (1 << (k - 1))][j + (1 << (k - 1))][k - 1]), max(r2d[i][j][k - 1], r2d[i][j + (1 << (k - 1))][k - 1]));
for(int i = 0; i < T; ++i) {
int x, y, k;
f >> x >> y >> k;
int pw = log2[k];
g << max(max(r2d[x][y][pw], r2d[x][y + k - (1 << pw)][pw]), max(r2d[x + k - (1 << pw)][y][pw], r2d[x + k - (1 << pw)][y + k - (1 << pw)][pw]));
g << "\n";
}
return 0;
}