Pagini recente » Cod sursa (job #1447182) | Cod sursa (job #2958332) | Cod sursa (job #3216653) | Cod sursa (job #3210240) | Cod sursa (job #3299031)
#include <fstream>
#include <iostream>
using namespace std;
int rmq[505][505][10], logar[505];
int main(){
int n, m, i, j, k, x, y, p;
ifstream fin( "plantatie.in" );
ofstream fout( "plantatie.out" );
//cout << "AJUNS\n";
//n = m = 1;
//cin >> n >> m;
fin >> n >> m;
//cout << n << ' ' << m << '\n';
for( i = 0; i < n; i++ ){
for( j = 0; j < n; j++ ){
fin >> rmq[i][j][0];
}
}
logar[0] = logar[1] = 0;
for( i = 2; i <= n; i++ ){
logar[i] = logar[i / 2] + 1;
}
for( k = 1; ( 1 << k ) <= n; k++ ){
for( i = 0; i + ( 1 << k ) - 1 < n; i++ ){
for( j = 0; j + ( 1 << k ) - 1 < n; j++ ){
rmq[i][j][k] = max( max( rmq[i][j][k - 1], rmq[i][j + ( 1 << ( k - 1 ) )][k - 1] ),
max( rmq[i + ( 1 << ( k - 1 ) )][j][k - 1],
rmq[i + ( 1 << ( k - 1 ) )][j + ( 1 << ( k - 1 ) )][k - 1] ) );
//cout << i << ' ' << j << ' ' << k << ' ' << rmq[i][j][k] << '\n';
}
}
}
for( i = 0; i < m; i++ ){
fin >> x >> y >> p;
//cout << i << ' ' << x << ' ' << y << ' ' << p << '\n';
x--;
y--;
k = logar[p];
//cout << i << ' ' << x << ' ' << y << ' ' << p << '\n';
fout << max( max( rmq[x][y][k], rmq[x][y + p - ( 1 << k )][k] ),
max( rmq[x + p - ( 1 << k )][y][k],
rmq[x + p - ( 1 << k )][y + p - ( 1 << k )][k] ) ) << '\n';
}
return 0;
}