Pagini recente » Cod sursa (job #1276113) | Cod sursa (job #447655) | Cod sursa (job #2124267) | Cod sursa (job #751271) | Cod sursa (job #928647)
Cod sursa(job #928647)
#include<cstdio>
#include<iostream>
using namespace std;
#define MAX 501
int A[MAX][MAX][10] , N , M , log[MAX] , x , y , dim , k;
void citire();
void solve();
int maxx(int a , int b , int c , int d);
int main()
{
citire();
solve();
for(int i = 1 ; i <= M ; ++i )
{
scanf("%d%d%d" , &x , &y , &dim);
k = log[dim];
printf("%d\n" , max(max(A[x][y][k],A[x+dim-(1<<k)][y][k]),max(A[x][y+dim-(1<<k)][k],A[x+dim-(1<<k)][y+dim-(1<<k)][k])));
}
return 0;
}
void citire()
{
freopen("plantatie.in" , "r" , stdin );
freopen("plantatie.out" , "w" , stdout);
scanf("%d%d" , &N , &M);
for( int i = 1 ; i <= N ; ++i )
for( int j = 1 ; j <= N ; ++j )
scanf("%d" , &A[i][j][0]);
}
void solve()
{
log[0] = 1;
for(int i = 2 ; i <= N ; ++i )
log[i] = log[i/2]+1;
for(int k = 1 ; (1<<k)-1 < N ; ++k )
for(int i = 1 ; i+(1<<k)-1 <= N ; ++i )
for(int j = 1 ; j+(1<<k)-1 <= N ; ++j )
A[i][j][k] = max(max(A[i][j][k-1],A[i+(1<<(k-1))][j][k-1]),max(A[i][j+(1<<(k-1))][k-1],A[i+(1<<(k-1))][j+(1<<(k-1))][k-1]));
}