Pagini recente » Cod sursa (job #1438940) | Cod sursa (job #1279639) | Cod sursa (job #521279) | Cod sursa (job #2573614) | Cod sursa (job #123800)
Cod sursa(job #123800)
#include <cstdio>
#include <algorithm>
const int maxn = 501;
const int maxm = 75001;
FILE *in = fopen("plantatie.in","r"), *out = fopen("plantatie.out","w");
int n, m;
int a[maxn][maxn];
int b[maxn][maxn][maxn];
void read()
{
fscanf(in, "%d %d", &n, &m);
for ( int i = 1; i <= n; ++i )
for ( int j = 1; j <= n; ++j )
fscanf(in, "%d", &a[i][j]);
}
int h[4];
int max(int x, int y, int p, int q)
{
h[0] = x, h[1] = y, h[2] = p, h[3] = q;
std::sort(h, h+4);
return h[3];
}
void prec()
{
for ( int i = 1; i <= n; ++i )
for ( int j = 1; j <= n; ++j )
b[i][j][1] = a[i][j];
for ( int i = n; i; --i )
for ( int j = n; j; --j )
for ( int k = 2; k <= n; ++k )
b[i][j][k] = max(b[i][j][k-1], b[i+1][j][k-1], b[i][j+1][k-1], b[i+1][j+1][k-1]);
}
int main()
{
read();
prec();
int x, y, z;
for ( int i = 1; i <= m; ++i )
{
fscanf(in, "%d %d %d", &x, &y, &z);
fprintf(out, "%d\n", b[x][y][z]);
}
return 0;
}