Pagini recente » Cod sursa (job #1950853) | Cod sursa (job #2053014) | Cod sursa (job #2570007) | Cod sursa (job #1068631) | Cod sursa (job #1800524)
#include <stdio.h>
int d[501][501][9], log[501];
inline int max2(int a, int b){
return a>b ? a:b;
}
inline int max4(int a, int b, int c, int d){
return max2(a,max2(b,max2(c,d)));
}
int main()
{
int n, m, i, j, x, y, l, p;
FILE *fi=fopen("plantatie.in", "r"), *fo=fopen("plantatie.out", "w");
fscanf(fi, "%d%d", &n, &m);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(p=0;(1<<p)<=i;p++){
if(p==0)
fscanf(fi, "%d", &d[i][j][p]);
else
d[i][j][p]=max4(d[i-(1<<(p-1))][j][p-1],d[i-(1<<(p-1))][j-(1<<(p-1))][p-1],d[i][j-(1<<(p-1))][p-1],d[i][j][p-1]);
}
log[1]=0;
for(i=2;i<=n;i++)
log[i]=1+log[i/2];
for(i=0;i<m;i++){
fscanf(fi, "%d%d%d", &x, &y, &l);
x=x+l-1;
y=y+l-1;
fprintf(fo, "%d\n", max4(d[x][y][log[l]],d[x-l+(1<<log[l])][y][log[l]],d[x-l+(1<<log[l])][y-l+(1<<log[l])][log[l]],d[x][y-l+(1<<log[l])][log[l]]));
}
fclose(fi);
fclose(fo);
return 0;
}