Pagini recente » Cod sursa (job #1022744) | Cod sursa (job #744436) | Cod sursa (job #2915538) | Cod sursa (job #1087805) | Cod sursa (job #1140271)
#include <cstdio>
#include <stdarg.h>
using namespace std;
int v[12][525][525];
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,nr=0,q=0;
scanf("%d %d %d",&i,&j,&k);i--,j--;
while ((1<<q) <= k) q++;
q--;
int r = maxof(4,v[q][i][j],v[q][i+k-(1<<q)][j],v[q][i][j+k-(1<<q)],v[q][i+k-(1<<q)][j+k-(1<<q)]);
printf("%d\n",r);
}
return 0;
}