Pagini recente » Cod sursa (job #1093565) | Cod sursa (job #2478697) | Cod sursa (job #275537) | Cod sursa (job #1860348) | Cod sursa (job #2166773)
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn=500;
int a[maxn][maxn][9],lg[maxn+1];
int main()
{
FILE *fin,*fout;
fin=fopen("plantatie.in","r");
fout=fopen("plantatie.out","w");
int n,l,m,x,y,z,ans;
fscanf(fin,"%d%d",&n,&m);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
fscanf(fin,"%d",&a[i][j][0]);
for(int i=n-1;i>=0;i--)
for(int j=n-1;j>=0;j--)
{
x=max(i,j);
for(int k=1;(1<<k)+x-1<n;k++)
{
y=1<<(k-1);
a[i][j][k]=max(max(a[i][j][k-1],a[i][j+y][k-1]),max(a[i+y][j][k-1],a[i+y][j+y][k-1]));
}
}
for(int i=2;i<=n;i++)
lg[i]=1+lg[i>>1];
for(int i=0;i<m;i++)
{
fscanf(fin,"%d%d%d",&x,&y,&z);
l=lg[z];n=1<<l;x--;y--;
ans=max(max(a[x][y][l],a[x+z-n][y][l]),max(a[x][y+z-n][l],a[x+z-n][y+z-n][l]));
fprintf(fout,"%d\n",ans);
}
fclose(fin);
fclose(fout);
return 0;
}