Pagini recente » Cod sursa (job #2215458) | Istoria paginii utilizator/mihnea.cazan15 | Cod sursa (job #816735) | Cod sursa (job #2775481) | Cod sursa (job #2866121)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int rmq[9][505][505];
int e[100005];
int n,m;
int a[505][505];
/**
rmq[i][j][k]
i-1
j,k
j+1,k+1
j+1,k
j,k+1
*/
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
fin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
rmq[0][i][j]=a[i][j];
for(int i=2;i<=n;i++)
e[i]=e[i/2]+1;
for(int i=1;i<=e[n];i++)
for(int j=1;j<=n-(1<<i)+1;j++)
for(int k=1;k<=n-(1<<i)+1;k++)
rmq[i][j][k]=max({rmq[i-1][j][k],rmq[i-1][j][k+(1<<(i-1))],
rmq[i-1][j+(1<<(i-1))][k],rmq[i-1][j+(1<<(i-1))][k+(1<<(i-1))]});
while(m--)
{
int x,y,sz;
fin>>x>>y>>sz;
int dx=x+sz-1;
int dy=y+sz-1;
fout<<max({rmq[e[sz]][x][y],rmq[e[sz]][dx-(1<<e[sz])+1][y],
rmq[e[sz]][x][dy-(1<<e[sz])+1],rmq[e[sz]][dx-(1<<e[sz])+1][dy-(1<<e[sz])+1]})<<"\n";
}
return 0;
}