Pagini recente » Istoria paginii runda/simulare_de_oni_9 | Cod sursa (job #1996403) | Cod sursa (job #1737618) | Cod sursa (job #1276285) | Cod sursa (job #2486162)
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n, log[500*501],m,p,q,t, a[501][501];
int r[9][501][501];
int max(int a, int b, int c, int d)
{
return max(max(a,b), max(c,d));
}
int main()
{
fin>>n>>m;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
fin>>a[i][j];
log[1]=0;
for(int i=2; i<=n; i++)
log[i]=1+log[i/2];
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
{
r[0][i][j]=a[i][j];
}
for(int l=1; l<=log[n]; l++)
for(int i=1; i<=n-(1<<l)+1; i++)
for(int j=1; j<=n-(1<<l)+1; j++)
{
r[l][i][j]=max(r[l-1][i][j], r[l-1][i][j+(1<<(l-1))], r[l-1][i+(1<<(l-1))][j], r[l-1][i+(1<<(l-1))][j+(1<<(l-1))]);
}
int l;
for(int i=1; i<=m; i++)
{
fin>>p>>q>>t;
int p1,q1;
p1=p+t-1;
q1=q+t-1;
l=log[t];
fout<<max(r[l][p][q], r[l][p1-(1<<l)+1][q], r[l][p][q1-(1<<l)+1], r[l][p1-(1<<l)+1][q1-(1<<l)+1])<<"\n";
}
return 0;
}