Pagini recente » Cod sursa (job #135765) | Cod sursa (job #2507724) | Cod sursa (job #346019) | Cod sursa (job #510038) | Cod sursa (job #1700572)
#include<fstream>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int r[501][501][9], v[501][501], n, m, log[501];
int maxim(int a,int b)
{
if(a>b)
return a;
return b;
}
void pre_log()
{
int i;
log[1]=0;
for(i=2;i<=n;i++)
{
log[i]=1+log[i/2];
}
}
void pre_mat()
{
int i,j,k,m1,m2;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
r[i][j][0]=v[i][j];
for(k=1;(1<<k)<=i;k++)
{
m1=maxim(r[i][j][k-1], r[i][j-(1<<k-1)][k-1]);
m2=maxim(r[i-(1<<k-1)][j][k-1], r[i-(1<<k-1)][j-(1<<k-1)][k-1]);
r[i][j][k]=maxim(m1,m2);
}
}
}
}
int sol(int a,int b,int c)
{
int l=log[c],m1,m2;
m1=maxim(r[a+(1<<l)-1][b+(1<<l)-1][l], r[a+(1<<l)-1][b+c-1][l]);
m2=maxim(r[a+c-1][b+(1<<l)-1][l], r[a+c-1][b+c-1][l]);
return maxim(m1,m2);
}
int main()
{
int i,x,y,t,j;
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>v[i][j];
pre_log();
pre_mat();
for(i=1;i<=m;i++)
{
f>>x>>y>>t;
g<<sol(x,y,t)<<"\n";
}
return 0;
}