Pagini recente » Cod sursa (job #2862558) | Utilizatori inregistrati la infinity-2022-7 | Cod sursa (job #2751934) | Cod sursa (job #1889378) | Cod sursa (job #1249815)
#include <fstream>
#include <algorithm>
using namespace std;
#define NMax 505
#define LGMax 10
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int n,m,lgn;
int RMQ[NMax][NMax][LGMax];
void build()
{
int x;
for(int aux=1;aux<=n;aux<<=1) lgn++;
for(int k=1;k<=lgn;++k) for(int i=1;i<=n;++i) for(int j=1;j<=n;++j)
{
x=(1<<(k-1));
if(i+x>n && j+x>n) RMQ[i][j][k]=RMQ[i][j][k-1];
else if(i+x>n) RMQ[i][j][k]=max( RMQ[i][j][k-1] , RMQ[i][j+x][k-1] );
else if(j+x>n) RMQ[i][j][k]=max( RMQ[i][j][k-1] , RMQ[i+x][j][k-1] );
else RMQ[i][j][k]=max( max ( RMQ[i][j][k-1] , RMQ[i+x][j+x][k-1] ) , max ( RMQ[i+x][j][k-1] , RMQ[i][j+x][k-1] ) );
}
}
int main()
{
int i,j,a,b,c,aux,p,x;
f>>n>>m;
for(i=1;i<=n;++i) for(j=1;j<=n;++j) f>>RMQ[i][j][0];
build();
while(m--)
{
f>>a>>b>>c;
for(p=-1,aux=1;aux<=c;aux<<=1) p++;
x=c-(1<<p);
g<<max( max( RMQ[a][b][p] , RMQ[a+x][b+x][p] ) , max( RMQ[a+x][b][p] , RMQ[a][b+x][p]) )<<"\n";
}
f.close();
g.close();
return 0;
}