Pagini recente » Cod sursa (job #1862774) | Cod sursa (job #493751) | Cod sursa (job #899408) | Cod sursa (job #1114505) | Cod sursa (job #2563123)
#include <bits/stdc++.h>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int rmq[20][505][505];
int n,m;
int solve(int x,int y,int k)
{
int logaritm=0;
while((1<<logaritm)<=k)
logaritm++;
logaritm--;
int rasp=max(rmq[logaritm][x][y],rmq[logaritm][x+k-(1<<logaritm)][y+k-(1<<logaritm)]);
rasp=max(rasp,max(rmq[logaritm][x+k-(1<<logaritm)][y],rmq[logaritm][x][y+k-(1<<logaritm)]));
return rasp;
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
f>>rmq[0][i][j];
}
}
for(int lg=1;(1<<lg)<=n;lg++)
{
int l=1<<lg;
for(int i=1;i<=n-l+1;i++)
{
for(int j=1;j<=n-l+1;j++)
{
rmq[lg][i][j]=max(rmq[lg-1][i][j],rmq[lg-1][i+(1<<(lg-1))][j+(1<<(lg-1))]);
rmq[lg][i][j]=max(rmq[lg][i][j],max(rmq[lg-1][i][j+(1<<(lg-1))],rmq[lg-1][i+(1<<(lg-1))][j]));
//cout<<rmq[lg][i][j]<<" ";
}
}
}
for(int i=1;i<=m;i++)
{
int x,y,k;
f>>x>>y>>k;
g<<solve(x,y,k)<<'\n';
}
}