Pagini recente » Cod sursa (job #2652481) | Cod sursa (job #2253269) | Cod sursa (job #3134335) | Cod sursa (job #1375054) | Cod sursa (job #2765530)
#include <bits/stdc++.h>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int n,m;
int Log2[505],rmq[25][505][505];
void build_rmq()
{
for(int i=2;i<=n;i++)
{
Log2[i] = 1 + Log2[i/2];
}
for(int k=1;k<=Log2[n];k++)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
rmq[k][i][j] = max(max(rmq[k-1][i][j],rmq[k-1][i+(1<<(k-1))][j+(1<<(k-1))]),max(rmq[k-1][i+(1<<(k-1))][j],rmq[k-1][i][j+(1<<(k-1))]));
}
}
}
}
int query(int l, int c, int k)
{
int L = l+k-1;
int C = c+k-1;
k = Log2[k];
return max(max(rmq[k][l][c],rmq[k][L-(1<<k)+1][C-(1<<k)+1]),max(rmq[k][L-(1<<k)+1][c],rmq[k][l][C-(1<<k)+1]));
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
f>>rmq[0][i][j];
}
}
build_rmq();
for(int i=1;i<=m;i++)
{
int l,c,k;
f>>l>>c>>k;
g<<query(l,c,k)<<'\n';
}
return 0;
}