Pagini recente » Cod sursa (job #588410) | Cod sursa (job #353664) | Cod sursa (job #1793231) | Cod sursa (job #3330097) | Cod sursa (job #3340222)
#include <bits/stdc++.h>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int r[20][505][505], lg[505];
int maxim(int a, int b, int c, int d){
int gr=0;
gr=max(a, b);
gr = max(gr, c);
gr=max(gr,d);
return gr;
}
int main()
{
int n, q, a, b, let;
in>>n>>q;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
in>>r[0][i][j];
}
}
for(int p=1, lat=2;lat<=n;p++, lat*=2){
for(int i1=1;i1<=n-lat+1;i1++){
for(int j1=1;j1<=n-lat+1;j1++){
int i2 = i1 + (lat>>1);
int j2 = j1 + (lat>>1);
r[p][i1][j1] = maxim(r[p-1][i1][j1], r[p-1][i2][j1], r[p-1][i1][j2], r[p-1][i2][j2]);
}
}
}
lg[1]=0;
for(int i=2;i<=n;i++){
lg[i]=lg[i/2]+1;
}
while(q--){
in>>a>>b>>let;
int k = lg[let];
int len = 1<<k;
int i2 = a+let-len;
int j2 = b+let-len;
out<<max(max(r[k][a][b],r[k][a][j2]), max(r[k][i2][b],r[k][i2][j2]))<<"\n";
}
return 0;
}