Pagini recente » Cod sursa (job #554148) | Cod sursa (job #2063025) | Cod sursa (job #2003724) | Cod sursa (job #370168) | Cod sursa (job #1042764)
#include<cstdio>
#include<fstream>
using namespace std;
#define maxn 501
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int mat[maxn][maxn], putere[maxn];
int RMQ[10][maxn][maxn];
int main() {
int n, q;
fin>>n>>q;
for( int i = 0; i < n; ++i) {
for( int j = 0; j < n; ++j)
fin>>RMQ[0][i][j];
}
for( int l = 1; (1<<l) <= n; ++l)
for( int i = 0; i < n; ++i)
for( int j = 0; j < n; ++j) {
RMQ[l][i][j] = RMQ[l-1][i][j];
int power = ( 1<<(l-1));
if( i + power < n) {
RMQ[l][i][j] = 3;//max(RMQ[l][i][j], RMQ[l-1][ i + power][j]);
if( j + power < n)
RMQ[l][i][j] = 3;//max( RMQ[l][i][j], max( RMQ[l-1][i][j + power], RMQ[l-1][i+power][j+power]));
}
}
putere[1] = 0;
for( int i = 2; i <= 500; ++i) {
putere[i] = putere[i-1] + !(i &(i-1));
// cout<<i<<" "<<putere[i]<<endl;
}
while(q) {
int x,y,l;
fin>>x>>y>>l;
x--; y--;
int max_pow = putere[l];
int power = ( 1<< max_pow);
int rez = max( RMQ[max_pow][x][y], RMQ[max_pow][x][y+l-power]);
rez = max ( rez, max( RMQ[max_pow][ x+l- power][y], RMQ[max_pow][x+l-power][y+l-power]));
fout<<rez<<endl;
q--;
}
return 0;
}