Pagini recente » Cod sursa (job #2363579) | Cod sursa (job #2023383) | Cod sursa (job #743591) | Cod sursa (job #455952) | Cod sursa (job #478728)
Cod sursa(job #478728)
#include<fstream>
using namespace std;
const char iname[]="plantatie.in";
const char oname[]="plantatie.out";
const int maxn=505;
const int maxlog=10;
ifstream f(iname);
ofstream g(oname);
int a[maxlog][maxn][maxn],i,j,n,k,m,log[maxn],b[maxn][maxn];
int query(int i,int j,int k)
{
int dis=log[k];
return max( max( a[dis][i][j], a[dis][i+k-(1<<dis)][j+k-(1<<dis)]), max( a[dis][i][j+k-(1<<dis)], a[dis][i+k-(1<<dis)][j]));
}
int main()
{
f>>n>>m;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
f>>a[0][i][j];
for(i=2;i<=n;++i)
log[i]=log[i>>1]+1;
for(k=1;(1<<k)<=n;++k)
for(i=n-(1<<k)+1;i;--i)
for(j=n-(1<<k)+1;j;--j)
a[k][i][j]=max( max( a[k-1][i][j], a[k-1][i][j+(1<<k-1)]), max( a[k-1][i+(1<<k-1)][j], a[k-1][i+(1<<k-1)][j+(1<<k-1)]) );
while(m--)
f>>i>>j>>k,g<<query(i,j,k)<<"\n";
}