Pagini recente » Cod sursa (job #1465121) | Cod sursa (job #2494856) | Cod sursa (job #1015592) | Cod sursa (job #811060) | Cod sursa (job #2052451)
#include<vector>
#include<fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int p[1000],d[501][501][18];
int i, n, m, t, a, b,l, j, x, y, xx, yy, k, maxi;
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
fin>>d[i][j][0];
for(i=2;i<=n;i++)
p[i]=p[i/2]+1;
for(t=1;t<=p[n];t++)
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
l=(1<<(t-1));
d[i][j][t]=d[i][j][t-1];
if(i+l<=n)
d[i][j][t]=max(d[i][j][t], d[i+l][j][t-1]);
if(j+l<=n)
d[i][j][t]=max(d[i][j][t], d[i][j+l][t-1]);
if(i+l<=n&&j+l<=n)
d[i][j][t]=max(d[i][j][t], d[i+l][j+l][t-1]);
}
}
for(i=1;i<=m;i++)
{
maxi=0;
fin>>x>>y>>k;
xx=x+k-1;
yy=y+k-1;
l=p[k];
k=(1<<l);
maxi=max(maxi, d[x][y][l]);
maxi=max(maxi, d[xx-k+1][y][l]);
maxi=max(maxi, d[x][yy-k+1][l]);
maxi=max(maxi, d[xx-k+1][yy-k+1][l]);
fout<<maxi<<"\n";
}
fin.close();
fout.close();
return 0;
}