Pagini recente » Cod sursa (job #966208) | Cod sursa (job #809087) | Cod sursa (job #2876885) | Cod sursa (job #759301) | Cod sursa (job #2682727)
#include <stdio.h>
#include <algorithm>
#include <math.h>
using namespace std;
FILE*f=fopen("plantatie.in","r");
FILE*g=fopen("plantatie.out","w");
int v[510][510],a[510][510][15];
int main()
{
int n,q,x,y,j,i,k,l;
fscanf(f,"%d%d",&n,&q);
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
{
fscanf(f,"%d",&v[i][j]);
a[i][j][0]=v[i][j];
}
for (k=1;(1<<k)<=n;k++)
for (i=1;i-1+(1<<k)<=n;i++)
for (j=1;j-1+(1<<k)<=n;j++)
a[i][j][k]=max(max(a[i][j][k-1],a[i+(1<<(k-1))][j+(1<<(k-1))][k-1]),max(a[i][j+(1<<(k-1))][k-1],a[i+(1<<(k-1))][j][k-1]));
for (i=1;i<=q;i++)
{
fscanf(f,"%d%d%d",&x,&y,&l);
k=log2(l);
fprintf(g,"%d\n",max(max(a[x][y][k],a[x+l-(1<<k)][y+l-(1<<k)][k]),max(a[x][y+l-(1<<k)][k],a[x+l-(1<<k)][y][k])));
}
fclose(f);
fclose(g);
return 0;
}