Pagini recente » Cod sursa (job #1512993) | Cod sursa (job #2605339) | Cod sursa (job #2877219) | Cod sursa (job #1419466) | Cod sursa (job #253309)
Cod sursa(job #253309)
#include <cstdio>
#define lm 510
long a[10][lm][lm],lg[lm],n,m,x,y,l,k;
long max(long a, long b, long c, long d)
{
if (a<b) a=b;
if (a<c) a=c;
if (a<d) a=d;
return a;
}
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
scanf("%ld %ld",&n,&m);
long i,j;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++) scanf("%ld ",&a[0][i][j]);
for (i=2; i<=n; lg[i]=lg[i++/2]+1);
for (k=1; k<=lg[n]; k++)
for (i=1; i+(1<<k)-1<=n; i++)
for (j=1; j+(1<<k)-1<=n; j++)
{
l=1<<(k-1);
a[k][i][j]=max(a[k-1][i][j], a[k-1][i][j+l], a[k-1][i+l][j], a[k-1][i+l][j+l]);
}
for (i=1; i<=m; i++)
{
scanf("%ld %ld %ld",&x,&y,&l);
k=lg[l];
printf("%ld\n",max(a[k][x][y], a[k][x][y+l-(1<<k)],
a[k][x+l-(1<<k)][y], a[k][x+l-(1<<k)][y+l-(1<<k)]));
}
fclose(stdin);
fclose(stdout);
}