Pagini recente » Cod sursa (job #467553) | Cod sursa (job #1754887) | Cod sursa (job #124418) | Cod sursa (job #1224631) | Cod sursa (job #2291298)
#include <cstdio>
#include <iostream>
using namespace std;
int a[511][511],d[511][511][11],v[511];
int main()
{
FILE *fin=fopen ("plantatie.in","r");
FILE *fout=fopen ("plantatie.out","w");
int n,m,i,j,k,sol,p2,i1,j1,i2,j2,l;
fscanf (fin,"%d%d",&n,&m);
for (i=2;i<=n;i++)
v[i]=1+v[i/2];
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
fscanf (fin,"%d",&d[i][j][0]);
k=1;
while ((1<<k)<=n){
p2=(1<<(k-1));
for (i=1;i+p2<=n;i++)
for (j=1;j+p2<=n;j++)
d[i][j][k]=max (max(d[i][j][k-1],d[i+p2][j][k-1]),max(d[i+p2][j+p2][k-1],d[i][j+p2][k-1]));
k++;
}
/// am facut precalcularea
for (;m;m--){
fscanf (fin,"%d%d%d",&i1,&j1,&k);
i2=i1+k-1;
j2=j1+k-1;
l=v[k];
p2=(1<<l);
sol=max (max(d[i1][j1][l],d[i2-(1<<l)+1][j1][l]),max(d[i2-(1<<l)+1][j2-(1<<l)+1][l],d[i1][j2-(1<<l)+1][l]));
fprintf (fout,"%d\n",sol);
}
return 0;
}