Pagini recente » Cod sursa (job #1925738) | Cod sursa (job #2630838) | Cod sursa (job #1058058) | Cod sursa (job #2655380) | Cod sursa (job #1746823)
# include <iostream>
# include <fstream>
# include <algorithm>
# define max4( a, b, c, d ) max( max( a, b ), max( c, d ) )
using namespace std;
# define MAX_N 500
# define LOG_N 10
int rmq[LOG_N][MAX_N][MAX_N];
int log2( int n ) {
if ( n == 1 )
return 0;
else
return 1 + log2( n >> 1 );
}
int main() {
ifstream fin( "plantatie.in" );
ofstream fout( "plantatie.out" );
int n, m, i, j, k, a, b, l, g;
fin >> n >> m;
for ( i = 0; i < n; i ++ )
for ( j = 0; j < n; j ++ )
fin >> rmq[0][i][j];
# define s ( 1 << k )
for ( k = 1; k <= log2( n ); k ++ )
for ( i = 0; i < n; i ++ )
for ( j = 0; j < n; j ++ )
rmq[k][i][j] = max4(
rmq[k - 1][i][j],
rmq[k - 1][i + s / 2][j],
rmq[k - 1][i + s / 2][j + s / 2],
rmq[k - 1][i][j + s / 2]
);
# undef s
for ( i = 0; i < m; i ++ ) {
fin >> a >> b >> l;
a --;
b --;
g = log2( l );
# define s ( 1 << g )
fout << max4(
rmq[g][a][b],
rmq[g][a][b + l - s],
rmq[g][a + l - s][b],
rmq[g][a + l - s][b + l - s]
) << '\n';
# undef s
}
fin.close();
fout.close();
return 0;
}