Pagini recente » Cod sursa (job #986364) | Cod sursa (job #284495) | Cod sursa (job #972785) | Cod sursa (job #1041776) | Cod sursa (job #2847068)
#define boostIO ios_base::sync_with_stdio(false); fin.tie(nullptr); fout.tie(nullptr);
#pragma GCC optimize ("Ofast")
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("plantatie.in");
ofstream fout ("plantatie.out");
const int MAX_N = 505;
int lg2[MAX_N];
int rmq[MAX_N][MAX_N][9][9];
int n;
int q, x, y, l;
int query(int i, int j, int ii, int jj){
int pi = lg2[ii - i];
int pj = lg2[jj - j];
ii -= (1<<pi) - 1;
jj -= (1<<pj) - 1;
return max({
rmq[i][j][pi][pj],
rmq[i][jj][pi][pj],
rmq[ii][j][pi][pj],
rmq[ii][jj][pi][pj]
});
}
int main (){
boostIO
lg2[0] = lg2[1] = 0;
for(int i=2; i<=500; i++)
lg2[i] = lg2[(i>>1)] + (i&1);
fin>>n>>q;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
fin>>rmq[i][j][0][0];
for(int pi=0; (1<<pi)<=n; pi++)
for(int pj=0; (1<<pj)<=n; pj++)
if(pi || pj)
for(int ii, i=1; (ii = i + (1<<pi)-1) <= n; i++)
for(int jj, j=1; (jj = j + (1<<pj)-1) <= n; j++)
rmq[i][j][pi][pj] = query(i, j, ii, jj);
while(q--){
fin>>x>>y>>l;
fout<<query(x, y, x+l-1, y+l-1)<<"\n";
}
return 0;
}