Pagini recente » Cod sursa (job #1460337) | Cod sursa (job #1490685) | Cod sursa (job #1300775) | Cod sursa (job #2174066) | Cod sursa (job #3303014)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin ("plantatie.in");
ofstream cout ("plantatie.out");
#define N 500
int v[N][N][10], v1[N+1];
void loggg(int n){
int i;
v1[1]=0;
for (i=2; i<=n; i++)
v1[i]=v1[i/2]+1;
}
void spt(int n, vector <vector <int>>& ma){
int l,c,i,m,mi;
for (l=0; l<n; l++)
for (c=0; c<n; c++)
v[l][c][0]=ma[l][c];
for (i=1; (1<<i)<=n; i++){
m=1<<i;
mi=m>>1;
for (l=0; l+m-1<n; l++)
for (c=0; c+m-1<n; c++)
v[l][c][i]=max(max(v[l][c][i-1], v[l+mi][c][i-1]), max(v[l][c+mi][i-1], v[l+mi][c+mi][i-1]));
}
}
int xquery(int l, int c, int k, int n){
int r,x=0;
r=v1[k];
x=max(x, v[l][c][r]);
x=max(x, v[l][c+k -(1<<r)][r]);
x=max(x, v[l+k-(1<<r)][c][r]);
x=max(x, v[l+k-(1<<r)][c+k-(1<<r)][r]);
return x;
}
int main()
{
int n,q,l,c,i,k;
cin >> n >> q;
vector <vector <int>> ma(n, vector <int>(n));
for (l=0; l<n; l++)
for (c=0; c<n; c++)
cin >> ma[l][c];
loggg(n);
spt(n, ma);
for (i=0; i<q; i++){
cin >> l >> c >> k;
cout << xquery(l-1, c-1, k, n) << '\n';
}
return 0;
}