Pagini recente » Cod sursa (job #1614819) | Cod sursa (job #1788319) | Cod sursa (job #2042552) | Cod sursa (job #2102500) | Cod sursa (job #2794671)
#include <bits/stdc++.h>
#define nmax 505
using namespace std;
string prob="plantatie";
ifstream in(prob+".in");
ofstream out(prob+".out");
int lg[32], rmq[32][nmax][nmax];
int n,m;
void dolg(){
for(int i=2;i<=nmax;i++)lg[i]=lg[i/2]+1;
}
void input(){
in>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
in>>rmq[0][i][j];
}
}
}
void dormq(){
for(int i=1;(1<<i)<=n;i++){
for(int x=1;x+(1<<i)-1<=n;x++){
for(int y=1;y+(1<<i)-1<=n;y++){
int s=1<<(i-1);
rmq[i][x][y]=max(
max(rmq[i-1][x][y],
rmq[i-1][x+s][y]),
max(rmq[i-1][x][y+s],
rmq[i-1][x+s][y+s]));
}
}
}
}
void doqueries(){
int x,y,k;
while(in>>x>>y>>k){
int s=(1<<lg[k]);
out<<max(
max(rmq[lg[k]][x][y],
rmq[lg[k]][x+k-s][y]),
max(rmq[lg[k]][x][y+k-s],
rmq[lg[k]][x+k-s][y+k-s]))<<'\n';
}
}
int main(){
dolg();
input();
dormq();
doqueries();
}