Pagini recente » Cod sursa (job #998145) | Cod sursa (job #1831891) | Cod sursa (job #185915) | Cod sursa (job #1030602) | Cod sursa (job #1280327)
#include<fstream>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
#define Nmax 501
int A[10][Nmax][Nmax],lg[Nmax];
int n,q,x,y,l;
int main ()
{
int i1,j1,L,x1,x2,y1,y2;
in>>n>>q;
lg[1]=0;
for(int i=2;i<=Nmax;i++)
lg[i]=lg[i/2]+1;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
in>>A[0][i][j];
for(int k=1;k<=lg[n];k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
if((1 << k) > i || (1 << k) > j)
continue;
i1=i-(1<<(k-1));
j1=j-(1<<(k-1));
A[k][i][j]=max(max(A[k-1][ i ][ j ],A[k-1][ i1 ][j]),max(A[k-1][i][j1],A[k-1][i1][j1]));
}
for(int k=1;k<=q;k++)
{
in>>x>>y>>l;
L = lg[l];
x1=x+(1<<L)-1;
y1=y+(1<<L)-1;
x2=x+l-1;
y2=y+l-1;
out << max(max(A[L][x1][y1] , A[L][x1][y2]) , max(A[L][x2][y1] , A[L][x2][y2])) << '\n';
}
return 0;
}