Pagini recente » Cod sursa (job #1641814) | Cod sursa (job #2108166) | Cod sursa (job #229098) | Cod sursa (job #1552738) | Cod sursa (job #2720249)
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int l[505], v[505][505], rmq[20][505][505], lg[505], a, b, k, n, m;
void buildrmq()
{
int i,j,l;
lg[1]=0;
for (i=2;i<=n;i++)
lg[i]=lg[i>>1]+1;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
rmq[0][i][j]=v[i][j];
for (l=1;l<=lg[n];l++)
{
for (i=1;i<=n-(1<<l)+1;i++)
for (j=1;j<=n-(1<<l)+1;j++)
rmq[l][i][j]=max(rmq[l-1][i][j],max(rmq[l-1][i+(1<<(l-1))][j],max(rmq[l-1][i][j+(1<<(l-1))],rmq[l-1][i+(1<<(l-1))][j+(1<<(l-1))])));
}
}
int answerrmq(int x, int y, int k)
{
return max(rmq[lg[k]][x][y],max(rmq[lg[k]][x+k-(1<<(lg[k]))][y],max(rmq[lg[k]][x][y+k-(1<<(lg[k]))],rmq[lg[k]][x+k-(1<<(lg[k]))][y+k-(1<<(lg[k]))])));
}
int main()
{
int i,j;
fin>>n>>m;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
fin>>v[i][j];
buildrmq();
for (i=1;i<=m;i++)
{
fin>>a>>b>>k;
fout<<answerrmq(a,b,k) <<"\n";
}
return 0;
}