Pagini recente » Cod sursa (job #276737) | Cod sursa (job #886928) | Cod sursa (job #2690246) | Cod sursa (job #1502212) | Cod sursa (job #1112029)
#include <cstdio>
#include <stdarg.h>
using namespace std;
int v[11][505][505];
int n,m;
int maxof(int n_args, ...)
{
va_list ap;
va_start(ap, n_args);
int max = va_arg(ap, int);
for(int i = 2; i <= n_args; i++) {
int a = va_arg(ap, int);
if(a > max) max = a;
}
va_end(ap);
return max;
}
int main() {
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
scanf("%d %d",&n,&m);
for (int i=0;i<n;i++) for (int j=0;j<n;j++) scanf("%d",&v[0][i][j]);
for (int k=1;(1<<k)<=n;k++) {
for (int i=0;i<=n-(1<<k-1);i++) for (int j=0;j<=n-(1<<k-1);j++) {
v[k][i][j] = maxof(4,v[k-1][i][j],v[k-1][i][j+(1<<(k-1))],v[k-1][i+(1<<(k-1))][j],v[k-1][i+(1<<(k-1))][j+(1<<(k-1))]);
}
}
while (m--) {
int i,j,k;
scanf("%d %d %d",&i,&j,&k);i--,j--;
int nr=0;
int q=1;
while ((1<<q) < k) {
nr++,q*=2;
}
nr--,q/=2;
int r = maxof(4,v[nr][i][j],v[nr][i+k-q][j],v[nr][i][j+k-q],v[nr][i+k-q][j+k-q]);
printf("%d\n",r);
}
return 0;
}