Pagini recente » Cod sursa (job #196241) | Cod sursa (job #657374) | Cod sursa (job #2853207) | Cod sursa (job #3349445) | Cod sursa (job #3355971)
/*
*/
#include <fstream>
#include <cmath>
const int NMAX=508;
int n,q;
int rmq[20][NMAX][NMAX];
int lg[NMAX];
int query(int x,int y,int k) {
int sh=k-(1<<lg[k]);
int ans=rmq[lg[k]][x][y];
ans=std::max(ans,rmq[lg[k]][x+sh][y]);
ans=std::max(ans,rmq[lg[k]][x+sh][y+sh]);
ans=std::max(ans,rmq[lg[k]][x][y+sh]);
return ans;
}
int main() {
std::ifstream fin("plantatie.in");
std::ofstream fout("plantatie.out");
std::ios_base::sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
fin >> n >> q;
for(int i=1; i<=n; i++) {
if(i>1) {
lg[i]=1+lg[i/2];
}
for(int j=1; j<=n; j++) {
fin >> rmq[0][i][j];
}
}
for(int put=1; (1<<put)<=n; put++) {
for(int i=1; i<=n-(1<<put)+1; i++) {
for(int j=1; j<=n-(1<<put)+1; j++) {
int l(1<<(put-1));
int ans=rmq[put-1][i][j];
ans=std::max(ans,rmq[put-1][i+l][j]);
ans=std::max(ans,rmq[put-1][i+l][j+l]);
ans=std::max(ans,rmq[put-1][i][j+l]);
rmq[put][i][j]=ans;
}
}
}
while(q--) {
int x,y,k;
fin >> x >> y >> k;
fout << query(x,y,k) << '\n';
}
return 0;
}