Pagini recente » Borderou de evaluare (job #103689) | Cod sursa (job #1038250) | Cod sursa (job #1207873) | Cod sursa (job #1356253) | Cod sursa (job #780851)
Cod sursa(job #780851)
#include<stdio.h>
#include<algorithm>
using namespace std;
#define maxn 505
#define maxlog 10
int n,m,a[maxlog][maxn][maxn],log[maxn];
int i,j,k;
void citire()
{
int i,j;
freopen("plantatie.in","r",stdin);
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i){
for(j=1;j<=n;++j)
scanf("%d",&a[0][i][j]);
}
}
void make()
{
for(i=2;i<=n;++i)
log[i]=log[i>>1]+1;
int aux;
for(k=1,aux=1<<k;aux<=n;++k,aux=1<<k)
for(i=n-aux+1;i;--i)
for(j=n-aux+1;j;--j)
a[k][i][j]=max( max( a[k-1][i][j], a[k-1][i][j+(aux-1)]), max( a[k-1][i+(aux-1)][j], a[k-1][i+(aux-1)][j+(aux-1)]) );
}
int query(int i,int j,int k)
{
int dis=log[k];
int aux=max( max( a[dis][i][j], a[dis][i+k-(1<<dis)][j+k-(1<<dis)]), max( a[dis][i][j+k-(1<<dis)], a[dis][i+k-(1<<dis)][j]));
printf("%d",aux);
return aux;
}
void afisare()
{
freopen("plantatie.out","w",stdout);
while(--m)
scanf("%d%d%d",&i,&j,&k),printf("%d",query(i,j,k));
}
int main()
{
citire();
make();
afisare();
return 0;
}