Pagini recente » Cod sursa (job #166921) | Cod sursa (job #831378)
Cod sursa(job #831378)
#include <fstream>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
const int N=505;
int r[N][N][10], a[N][N],lg[N];
inline int max(int a, int b)
{
return a>b ? a:b;
}
int main()
{
int n,m,i,j,k,x,y,log,m1,m2;
in>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
in>>a[i][j];
r[0][i][j]=a[i][j];
}
for(k=1;(1<<k)<=n;k++)
for(i=1;i+(1<<k)-1<=n;i++)
for(j=1;j+(1<<k)-1<=n;j++)
{
m1=max(r[k-1][i][j],r[k-1][i][j+(1<<(k-1))]);
m2=max(r[k-1][i+(1<<(k-1))][j], r[k-1][i+(1<<(k-1))][j+(1<<(k-1))]);
r[k][i][j]=max(m1,m2);
}
lg[1]=0;
for(i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
while(m--)
{
in>>x>>y>>k;
log=lg[k];
m1=max(r[log][i][j],r[log][i][j+k-(1<<log)+1]);
m2=max(r[log][i+k-(1<<log)+1][j],r[log][i+k-(1<<log)+1][j+k-(1<<log)+1]);
out<<max(m1,m2)<<"\n";
}
}