Pagini recente » Cod sursa (job #265781) | Cod sursa (job #2438117) | Cod sursa (job #118561) | Cod sursa (job #769893) | Cod sursa (job #2789765)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("plantatie.in");
ofstream fout ("plantatie.out");
const int NMAX=530;
const int KMAX=33;
int rmq[KMAX][NMAX][NMAX],n,m;
int main()
{
fin >>n>>m;
for (int i=1;i<=n;++i){
for (int j=1;j<=n;++j){
fin >>rmq[0][i][j];
}
}
int kmax=int (log2 (n));
for (int k=1;k<=kmax;k++){
for (int i=1;i+(1<<k)-1<=n;++i){
for (int j=1;j+(1<<k)-1<=n;++j){
int a,b,c,d;
a=rmq[k-1][i][j];
b=rmq[k-1][i][j+(1<<k-1)];
c=rmq[k-1][i+(1<<k-1)][j];
d=rmq[k-1][i+(1<<k-1)][j+(1<<k-1)];
rmq[k][i][j]=max (max (a,b),max (c,d));
//fout <<rmq[k][i][j]<<' ';
}
//fout <<'\n';
}
//fout <<'\n';
}
for (int r=1;r<=m;++r){
int i,j,c,a,b,d,e;
fin >>i>>j>>c;
int k=int (log2 (c));
a=rmq[k][i][j];
b=rmq[k][i][j+c-(1<<k)];
d=rmq[k][i+c-(1<<k)][j];
e=rmq[k][i+c-(1<<k)][j+c-(1<<k)];
fout <<max(max (a,b),max (d,e))<<'\n';
}
fin.close ();
fout.close ();
return 0;
}