Pagini recente » Cod sursa (job #3030707) | Cod sursa (job #2154737) | Cod sursa (job #2561217) | Cod sursa (job #1201201) | Cod sursa (job #1734784)
#include <cstdio>
#define MAXN 500
#define MAXLOG 8
using namespace std;
inline int maxim(int a, int b, int c, int d){
if(a<b)
a=b;
if(a<c)
a=c;
if(a<d)
a=d;
return a;
}
int rmq[MAXLOG+1][MAXN+1][MAXN+1], log[MAXN+1];
int main()
{
FILE *fin, *fout;
int n, m, i, j, k, l, aux, x, y;
for(i=2; i<=MAXN; i++)
log[i]=log[i>>1]+1;
fin=fopen("plantatie.in", "r");
fscanf(fin, "%d%d", &n, &m);
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
fscanf(fin, "%d", &rmq[0][i][j]);
for(k=1; (1<<k)<=n; k++){
l=(1<<(k-1));
aux=(l<<1);
for(i=1; i<=n-aux+1; i++)
for(j=1; j<=n-aux+1; j++)
rmq[k][i][j]=maxim(rmq[k-1][i][j], rmq[k-1][i+l][j], rmq[k-1][i][j+l], rmq[k-1][i+l][j+l]);
}
fout=fopen("plantatie.out", "w");
for(i=0; i<m; i++){
fscanf(fin, "%d%d%d", &x, &y, &k);
l=(1<<log[k]);
fprintf(fout, "%d\n", maxim(rmq[log[k]][x][y], rmq[log[k]][x][y+k-l], rmq[log[k]][x+k-l][y], rmq[log[k]][x+k-l][y+k-l]));
}
fclose(fin);
fclose(fout);
return 0;
}