Pagini recente » Cod sursa (job #482213) | Cod sursa (job #2845081) | Cod sursa (job #2681107) | Cod sursa (job #2197695) | Cod sursa (job #2903557)
#include <bits/stdc++.h>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int n, m, e[505], rmq[10][505][505];
void ex_max()
{ int i;
e[1]=0;
for(i=2; i<=n; i++)
e[i]=1+e[i/2];
}
int main()
{
int i, j, k, L, dk, lat, x;
f>>n>>m;
ex_max();
for (i=1; i<=n; i++)
for(j=1; j<=n; j++)
f>>rmq[0][i][j];
for(k=1; k<=e[n]; k++){
dk=(1<<k);
L=(1<<(k-1));
for (i=1; i+L<=n; i++)
for (j=1; j+L<=n; j++)
rmq[k][i][j]=max({rmq[k-1][i][j], rmq[k-1][i][j+L], rmq[k-1][i+L][j], rmq[k-1][i+L][j+L]});
}
while(m--)
{
f>>i>>j>>lat;
if(lat==1){
g<<rmq[0][i][j]<<"\n";
}
else{
dk =(1<<e[lat]);
k = e[lat];
x = max({rmq[k][i][j], rmq[k][i][j+lat-dk], rmq[k][i+lat-dk][j], rmq[k][i+lat-dk][j+lat-dk]});
g<<x<<"\n";
}
}
return 0;