Pagini recente » Cod sursa (job #1741977) | Cod sursa (job #2192654) | Cod sursa (job #3236536) | Cod sursa (job #80923) | Cod sursa (job #2984950)
#include<bits/stdc++.h>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int n,m,x,y,z,a[505][505][20],f[1005],s;
int main()
{in>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
in>>a[i][j][0];
for(int i=2;i<=n;i++)
f[i]=f[i/2]+1;
for(int k=1;(1<<k)<=n;k++)
for(int i=(1<<k);i<=n;i++)
for(int j=(1<<k);j<=n;j++)
{a[i][j][k]=max(a[i][j][k],a[i][j][k-1]);
a[i][j][k]=max(a[i][j][k],a[i][j-(1<<(k-1))][k-1]);
a[i][j][k]=max(a[i][j][k],a[i-(1<<(k-1))][j][k-1]);
a[i][j][k]=max(a[i][j][k],a[i-(1<<(k-1))][j-(1<<(k-1))][k-1]);
}
for(int l=1;l<=m;l++)
{in>>x>>y>>z; s=0;
s=max(s,a[x+(1<<f[z])-1][y+(1<<f[z])-1][f[z]]);
s=max(s,a[x+(1<<f[z])-1][y+z-1][f[z]]);
s=max(s,a[x+z-1][y+(1<<f[z])-1][f[z]]);
out<<max(s,a[x+z-1][y+z-1][f[z]])<<'\n';
}
return 0;
}