Pagini recente » Cod sursa (job #190992) | Cod sursa (job #1633053) | Cod sursa (job #2986486) | Cod sursa (job #1077217) | Cod sursa (job #3038321)
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
int rmq[503][503][10], start, st, dr, lung, lg2, n, q, val, putere; //rmq[X][Y][DIMENSIUNE 2^L]
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin>>n>>q;
for (int i=1; i<=n; i++)
for (int j=1; j<=n; j++)
cin>>rmq[i][j][0];
val=(int)log2(n);
putere=1;
for (int h=1; h<=val; h++, putere*=2)
for (int i=1; i<=n; i++)
for (int j=1; j<=n; j++)
{
rmq[i][j][h]=max(rmq[i+putere/2][j][h-1], rmq[i][j+putere/2][h-1]);
rmq[i][j][h]=max(rmq[i][j][h], rmq[i][j][h-1]);
rmq[i][j][h]=max(rmq[i][j][h], rmq[i+putere/2][j+putere/2][h-1]);
}
while (q--)
{
cin>>st>>dr>>lung;
lg2=log2(lung);
start=1;
start=1<<(lg2-1);
cout<<max(max(rmq[st][dr][lg2], rmq[st+lung-start][dr][lg2]), max(rmq[st][dr+lung-start][lg2], rmq[st+lung-start][dr+lung-start][lg2]))<<'\n';
}
return 0;
}