Pagini recente » Cod sursa (job #1504198) | Cod sursa (job #940136) | Cod sursa (job #200978)
Cod sursa(job #200978)
#include <stdio.h>
#define NMAX 600
#define FIN "plantatie.in"
#define FOUT "plantatie.out"
int x,n,q1,q2,q3,p,w,i,j,k,m,ii;
int A[NMAX][NMAX][NMAX];
int B[NMAX];
int max(int a, int b, int c, int d)
{
int maxim;
maxim=1;
if (a>maxim)
maxim=a;
if (b>maxim)
maxim=b;
if (c>maxim)
maxim=c;
if (d>maxim)
maxim=d;
return maxim;
}
int descompune(int cif)
{
int nr;
nr=0;
while (cif%2==0)
{
++nr;
cif/=2;
}
return nr;
}
void solve()
{
//p=descompune(k);
for (i=1;i<=m;++i)
{
scanf("%d %d %d", &q1,&q2,&q3);
// for (ii=3;ii<=n;++ii)
// B[i]=descompune(ii);
for (ii=2;ii<=n;++ii)
B[i]=B[i>>1]+1;
x=B[q3];
printf("%d\n",max(A[q1][q2][x],A[q1][q2+q3-(1<<x)][x],A[q1+q3-(1<<x)][q2+q3-(1<<x)][(1<<x)],A[q1+q3-(1<<x)][q2][x]));
}
}
void init()
{
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
for (k=1;k<=n;++k);
A[i][j][k]=max(A[i][j][k-1],A[i+1][j][k-1],A[i][j+1][k-1],A[i+1][j+1][k-1]);
}
void read()
{
freopen(FIN,"rt",stdin);
freopen(FOUT,"wt",stdout);
scanf("%d %d", &n, &m);
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
scanf("%d", &A[i][j][0]);
init();
solve();
}
int main()
{
read();
return 0;
}