Pagini recente » Cod sursa (job #3309665) | Cod sursa (job #1479524) | Cod sursa (job #3358651) | Cod sursa (job #423794) | Cod sursa (job #3358755)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int rmq[35][505][505];
int a[505][505];
int getMin(int x, int y, int l)
{
int p=31- __builtin_clz(l);
//return max(rmq[p][x],rmq[p][y-(1<<p)+1]);
int minim = max(rmq[p][x][y],rmq[p][x+l-(1<<p)][y]);
minim=max(minim,rmq[p][x][y+l-(1<<p)]);
return max(minim,rmq[p][x+l-(1<<p)][y+l-(1<<p)]);
}
int main()
{
int n,m;
fin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
fin>>a[i][j];
rmq[0][i][j]=a[i][j];
}
}
for(int p=1; (1<<p) <=n ;p++)
{
for(int i=1;i+ (1 << p) - 1<=n;i++)
{
for(int j=1;j+(1<<p)-1<=n;j++)
{
rmq[p][i][j]=max(rmq[p-1][i][j],rmq[p-1][i+(1<<(p-1))][j]);
rmq[p][i][j]=max(rmq[p][i][j],rmq[p-1][i][j+(1<<(p-1))]);
rmq[p][i][j]=max(rmq[p][i][j],rmq[p-1][i+(1<<(p-1))][j+(1<<(p-1))]);
}
}
}
for(int i=1;i<=m;i++)
{
int x,y,l;
fin>>x>>y>>l;
fout<<getMin(x,y,l)<<endl;
}
return 0;
}