Pagini recente » Cod sursa (job #2104323) | Cod sursa (job #2688400) | Cod sursa (job #1804923) | Cod sursa (job #688585) | Cod sursa (job #832299)
Cod sursa(job #832299)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int x[555][555],w[10][555][555],l[555];
inline int maxim(int a,int b)
{
return a<b? b:a;
}
int main()
{
int n,m,i,j,k,p,lung,a,b,c;
in>>n>>m;
for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j)
{
in>>x[i][j];
w[0][i][j]=x[i][j];
}
}
p=2;
for(k=1;p<=n;++k)
{
for(i=1;i<=n-p+1;++i)
{
for(j=1;j<=n-p+1;++j)
{
w[k][i][j]=maxim(maxim(w[k-1][i][j],w[k-1][i][j+p/2]),maxim(w[k-1][i+p/2][j],w[k-1][i+p/2][j+p/2]));
}
}
p*=2;
}
p=1;
k=0;
for(i=1;i<=n;++i)
{
if(2*p<=i)
{
p*=2;
++k;
}
l[i]=k;
}
for(i=1;i<=m;++i)
{
in>>a>>b>>c;
lung=l[c];
p=1<<lung;
out<<maxim(maxim(w[lung][a][b],w[lung][a][b+c-p]),maxim(w[lung][a+c-p][b],w[lung][a+c-p][b+c-p]))<<"\n";
}
return 0;
}