Pagini recente » Cod sursa (job #2050736) | Cod sursa (job #603598) | Cod sursa (job #1135268) | Cod sursa (job #2453092) | Cod sursa (job #1280617)
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n, m, i, j, k, kq;
int A[550][550][12];
int P[510];
void query(int i, int j, int k){
fout << max(A[i][j][P[k]], max(A[i+k-(1<<P[k])][j][P[k]], max(A[i][j+k-(1<<P[k])][k],A[i+k-(1<<P[k])][j+k-(1<<P[k])][P[k]])))<<'\n';
}
int main()
{
fin >> n >> m;
for(i = 1; i <= n; i ++)
for(j = 1; j <= n; j ++)
fin >> A[i][j][0];
P[1] = 0;
for(i = 2; i <= n; i ++)
P[i] = 1 + P[i / 2];
for(k = 1; (1 << k) <= n; k ++)
for(i = 1; i + (1 << (k - 1)) - 1 <= n; i ++)
for(j = 1; j + (1 << (k - 1)) - 1 <= n; j ++){
A[i][j][k] = max(A[i][j][k - 1],max(A[i + (1 << (k - 1))][j][k - 1],max(A[i][j + (1 << (k - 1))][k - 1], A[i + (1 << (k - 1))][j + (1 << (k - 1))][k - 1])));
}
for(int y = 1; y <= m; y ++){
fin >> i >> j >> kq;
query(i,j,kq);
}
return 0;
}