Pagini recente » Cod sursa (job #2329098) | Cod sursa (job #1318675) | Cod sursa (job #552010) | Cod sursa (job #1991809) | Cod sursa (job #1892825)
#include <bits/stdc++.h>
#define pb push_back
#define NMAX 505
#define INF 0x3f3f3f3f
#define x first
#define y second
using namespace std;
typedef pair<int, double> pii;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int v[NMAX][NMAX],preclog[NMAX];
int rmq[11][NMAX][NMAX];
int main() {
int n,m,i,ans=0,stare,j,bst,k,lg,p,x1,y1;
fin>>n>>m;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j) {
fin>>v[i][j];
rmq[0][i][j]=v[i][j];
}
for(k=1;(1<<k)<=n;++k) {
for(i=1;i+(1<<k)-1<=n;++i) {
for(j=1;j+(1<<k)-1<=n;++j) {
rmq[k][i][j]=max(rmq[k-1][i][j],rmq[k-1][i+(1<<(k-1))][j]);
rmq[k][i][j]=max(rmq[k][i][j],max(rmq[k-1][i][j+(1<<(k-1))],rmq[k-1][i+(1<<(k-1))][j+(1<<(k-1))]));
}
}
}
for(i=2;i<=n;++i) preclog[i]=preclog[i/2]+1;
while(m--) {
fin>>i>>j>>k;
lg=preclog[k];
p=1<<lg;
x1=i+k-p;
y1=j+k-p;
ans=max(rmq[lg][i][j],max(rmq[lg][i][y1],max(rmq[lg][x1][j],rmq[lg][x1][y1])));
fout<<ans<<'\n';
}
return 0;
}