Pagini recente » Cod sursa (job #2188714) | Cod sursa (job #1199414) | Cod sursa (job #2332428) | Cod sursa (job #3244380) | Cod sursa (job #2276992)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin ("plantatie.in");
ofstream cout ("plantatie.out");
int v[505][505],r[10][505][505],log[505];
int main()
{
int n,i,j,m,k,a,b,a1,a2;
cin>>n>>m;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
cin>>v[i][j];
log[1]=0;
for(i=2;i<=n;++i)
log[i]=1+log[i/2];
for(i=0;i<=log[n]+1;++i)
{
for(j=1 << i;j<=n;++j)
{
for(k=1<<i;k<=n;++k)
{
if(i==0)
r[i][j][k]=v[j][k];
else
r[i][j][k]=max(max(r[i-1][j][k],r[i-1][j-(1<<(i-1))][k-(1<<(i-1))]),max(r[i-1][j-(1<<(i-1))][k],r[i-1][j][k-(1<<(i-1))]));
}
}
}
for(i=1;i<=m;++i)
{
int a,b,c,a1,b1;
cin>>a>>b>>k;
a1=a+k-1;
b1=b+k-1;
k=log[k];
cout<<max(max(r[k][a1][b1],r[k][a1][b+(1<<k)-1]),max(r[k][a+(1<<k)-1][b1],r[k][a+(1<<k)-1][b+(1<<k)-1]))<<'\n';
}
return 0;
}