Pagini recente » Cod sursa (job #1606244) | Monitorul de evaluare | Cod sursa (job #2555145) | Monitorul de evaluare | Cod sursa (job #3330568)
#include<iostream>
using namespace std;
#define endl '\n'
#define NMAX 501
#define MAX2 18
int n,q;
int lg2[NMAX],rmq[MAX2][NMAX][NMAX];
int main(...){
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
cin>>n>>q;
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
cin>>rmq[0][i][j];
}
if(i>1)lg2[i]=1+lg2[i>>1];
}
for(int k=1;(1<<k)<=n;++k){
for(int i=1;i+(1<<k)-1<=n;++i){
for(int j=1;j+(1<<k)-1<=n;++j){
rmq[k][i][j]=max(rmq[k-1][i+(1<<(k-1))][j+(1<<(k-1))],max(rmq[k-1][i][j],max(rmq[k-1][i+(1<<(k-1))][j],rmq[k-1][i][j+(1<<(k-1))])));
}
}
}
for(;q;--q){
int i,j,k;
cin>>i>>j>>k;
int l=lg2[k];
cout<<max(
max(
rmq[l][k+i-(1<<l)][k+j-(1<<l)],
rmq[l][i][j]
),
max(
rmq[l][i][k+j-(1<<l)],
rmq[l][k+i-(1<<l)][j]
)
)<<endl;
}
return 0;
}