Pagini recente » Cod sursa (job #2660240) | Cod sursa (job #3198839) | Cod sursa (job #939122) | Cod sursa (job #2609877) | Cod sursa (job #2628959)
#include <fstream>
using namespace std;
ifstream in ("plantatie.in");
ofstream out ("plantatie.out");
int log ( int x )
{
int p = 0;
while ( x > 1 )
{
x /= 2;
++p;
}
return p;
}
int n, m;
int v[40][507][507];
int x, y, l;
int main()
{
in >> n >> m;
for ( register int i = 1 ; i <= n ; ++i )
for ( register int j = 1 ; j <= n ; ++j )
in >> v[0][i][j];
for ( register int k = 1 ; ( 1 << k ) <= n ; ++k )
for ( register int i = 1 ; i + ( 1 << k ) <= n + 1 ; ++i )
for ( register int j = 1 ; j + ( 1 << k ) <= n + 1 ; ++j )
v[k][i][j] = max ( v[k - 1][i][j], max ( v[k - 1][i][j + ( 1 << ( k - 1 ) )], max ( v[k - 1][i + ( 1 << ( k - 1 ) )][j], v[k - 1][i + ( 1 << ( k - 1 ) )][j + ( 1 << ( k - 1 ) )] ) ) );
for ( register int q = 1 ; q <= m ; ++q )
{
in >> x >> y >> l;
int lg = log (l);
out << max ( v[lg][x][y], max ( v[lg][x - ( 1 << lg ) + l][y], max ( v[lg][x][y - ( 1 << lg ) + l], v[lg][x - ( 1 << lg ) + l][y - ( 1 << lg ) + l] ) ) ) << '\n';
}
return 0;
}