Pagini recente » Cod sursa (job #2117843) | Cod sursa (job #2448061) | Cod sursa (job #2248003) | Cod sursa (job #606808) | Cod sursa (job #2586391)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ( "plantatie.in" );
ofstream g ( "plantatie.out" );
int rmq[10][502][502], a[502][502], p[502];
int main()
{
int N, Q;
f >> N >> Q;
for ( int i = 1; i <= N; i++ )
for ( int j = 1; j <= N; j++ )
{
f >> a[i][j];
rmq[0][i][j] = a[i][j];
}
for ( int i = 2; i <= N; i++ )
p[i] = p[i / 2] + 1;
for ( int i = 1; ( 1 << i ) <= N; i++ )
{
int l = ( 1 << ( i - 1 ) ), mx = N - 2 * l + 1;
for ( int j = 1; j <= mx; j++ )
for ( int k = 1; k <= mx; k++ )
rmq[i][j][k] = max ( max ( rmq[i - 1][j][k], rmq[i - 1][j][k + l] ), max ( rmq[i - 1][j + l][k], rmq[i - 1][j + l][k + l] ) );
}
int l, c, lg;
while ( Q-- )
{
f >> l >> c >> lg;
int pu = p[lg];
int dif = lg - ( 1 << pu );
g << max ( max ( rmq[pu][l][c], rmq[pu][l + dif][c] ), max ( rmq[pu][l][c + dif], rmq[pu][l + dif][c + dif] ) ) << '\n';
}
return 0;
}