Pagini recente » Cod sursa (job #660675) | Cod sursa (job #1540436) | Cod sursa (job #2033812) | Cod sursa (job #941592) | Cod sursa (job #2563112)
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int st,dr,mij,v[10][505][505],n,q,m,x,y,lat,put,maxim,maxp;
int p[20],lg[505];
int main()
{
fin>>n>>q;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
fin>>v[0][i][j];
p[0]=1;
for(int i=1;i<=18;i++)
p[i]=p[i-1]*2;
for(int j=0;j<=18;j++)
if(p[j]>n)
{maxp=j-1;break;}
for(int k=1;k<=maxp;k++)
{
put=(1<<(k-1));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
int v1=max(v[k-1][i+put][j],v[k-1][i][j]);
int v2=max(v[k-1][i][j+put],v[k-1][i+put][j+put]);
v[k][i][j]=max(v1,v2);
}
}
}
for(int k=1;k<=q;k++)
{
fin>>x>>y>>lat;
put=log2(lat);
int v1=max(v[put][x+lat-p[put]][y],v[put][x][y+lat-p[put]]);
int v2=max(v[put][x][y],v[put][x+lat-p[put]][y+lat-p[put]]);
fout<<max(v1,v2)<<endl;
}
}