Pagini recente » Cod sursa (job #1385873) | Cod sursa (job #246180) | Cod sursa (job #1295155) | Cod sursa (job #916374) | Cod sursa (job #3355077)
#include <bits/stdc++.h>
using namespace std;
ifstream F ("plantatie.in");
ofstream G ("plantatie.out");
const int nmax = 501;
int rmq[nmax][nmax][11];
int lg[nmax];
int n, q;
int main()
{
F >> n >> q;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
F >> rmq[i][j][0];
}
lg[1] = 0;
for(int i = 2; i <= n; i++)
lg[i] = lg[i / 2] + 1;
for(int l = 1; l <= lg[n]; l++)
{
int p = (1 << (l - 1));
for(int i = ( 1 << l ); i <=n; i++)
{
for(int j = ( 1 << l ); j <= n; j++)
rmq[i][j][l] = max(max(rmq[i - p][j][l - 1], rmq[i - p][j - p][l - 1]), max(rmq[i][j][l - 1],rmq[i][j - p][l - 1]));
}
}
for(int i = 1; i <= q; i++)
{
int l, c, d;
F >> l >> c >> d;
int p = (1 << lg[d]);
int g = lg[d];
G << max(max(rmq[ l + p - 1 ][ c + p - 1 ][g], rmq[l + d - 1][c + p - 1][g]), max(rmq[l + p - 1][c + d - 1][g], rmq[ l + d - 1 ][ c + d - 1 ][g]))<<"\n";
}
return 0;
}