Pagini recente » Cod sursa (job #1771368) | Cod sursa (job #1746653) | Monitorul de evaluare | Cod sursa (job #1460076) | Cod sursa (job #331818)
Cod sursa(job #331818)
#include<stdio.h>
#define nmax 512
int n,m[nmax][nmax][32],put[nmax],pm[nmax];
int max(int x,int y)
{
if (x>y)
return x;
return y;
}
int main()
{
int t;
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
scanf("%d%d",&n,&t);
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
scanf("%d",&m[i][j][1]);
int p=1;
for(int k=2;p<=n;++k)
{
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
m[i][j][k]=max( max(m[i][j][k-1],m[i+p][j][k-1]) , max(m[i+p][j+p][k-1],m[i][j+p][k-1]) );
put[p]=k-1;
pm[p]=p;
p=p*2;
}
for(int i=1;i<=n;++i)
if (!put[i])
{
put[i]=put[i-1];
pm[i]=pm[i-1];
}
for(;t;--t)
{
int i,j,k;
scanf("%d%d%d",&i,&j,&k);
int p=put[k],l=pm[k];
printf("%d\n",max(m[i][j][p], max(m[i][j+k-l][p], max(m[i+k-l][j][p], m[i+k-l][j+k-l][p]) ) ));
}
return 0;
}