Pagini recente » Cod sursa (job #2480906) | Cod sursa (job #1364295) | Cod sursa (job #146676) | Cod sursa (job #2074502) | Cod sursa (job #2485596)
#include <fstream>
#include <algorithm>
#include <iostream>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int r[10][501][501],log[501];
int main()
{
int n,x,y,m,l,i,j,lat,rez;
in>>n>>m;
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
in>>r[0][i][j];
}
}
for(l=1; (1<<l)<=n; l++)
{
lat=1<<(l-1);
for(i=1; i + (1 << l) <= n + 1; i++)
{
for(j=1; j + (1 << l) <= n + 1; j++)
{
r[l][i][j]=max(r[l-1][i][j], r[l-1][i][j+lat]);
r[l][i][j]=max(r[l][i][j], r[l-1][i+lat][j]);
r[l][i][j]=max(r[l][i][j], r[l-1][i+lat][j+lat]);
}
}
}
log[1]=0;
for(i=2; i<=n; i++)
{
log[i]=1+log[i/2];
}
//return 0;
for(int a=1; a<=m; a++)
{
in>>x>>y>>lat;
l=log[lat];
//cout << x << " " << y << " " << lat << " " << l << "\n";
rez=max(r[l][x][y], r[l][x][y+lat-(1<<l)]);
rez=max(rez, r[l][x+lat-(1<<l)][y]);
rez=max(rez, r[l][x+lat-(1<<l)][y+lat-(1<<l)]);
out<<rez<<"\n";
}
return 0;
}