Pagini recente » Cod sursa (job #3130613) | Cod sursa (job #612239) | Cod sursa (job #1331456) | Cod sursa (job #447890) | Cod sursa (job #1775506)
#include <cstdio>
const int MAX_N = 500;
const int MAX_LOG = 9;
int rmq[MAX_N][MAX_N][1+MAX_LOG];
int log[MAX_N];
int min(int a, int b) {
if(a < b)
return a;
return b;
}
int max4(int a, int b, int c, int d) {
int r;
r = a;
if(b > r)
r = b;
if(c > r)
r = c;
if(d > r)
r = d;
return r;
}
int main() {
int n, m, l, c, i, k, lg, l2, c2;
for(i = 2; i <= MAX_N; i++) {
log[i] = 1 + log[i / 2];
}
FILE *fin = fopen("plantatie.in", "r");
FILE *fout = fopen("plantatie.out", "w");
fscanf(fin, "%d%d", &n, &m);
for(l = 0; l < n; l++)
for(c = 0; c < n; c++) {
fscanf(fin, "%d", &rmq[l][c][0]);
for(i = 1; i <= log[min(l, c) + 1]; i++)
rmq[l][c][i] = max4(rmq[l][c][i - 1], rmq[l - (1 << (i - 1))][c][i - 1],
rmq[l][c - (1 << (i - 1))][i - 1],
rmq[l - (1 << (i - 1))][c - (1 << (i - 1))][i - 1]);
}
for(i = 0; i < m; i++) {
fscanf(fin, "%d%d%d", &l, &c, &k);
l--;
c--;
l2 = l + k - 1;
c2 = c + k - 1;
lg = log[k];
fprintf(fout, "%d\n", max4(rmq[l2][c2][lg], rmq[l+(1<<lg)-1][c2][lg],
rmq[l2][c+(1<<lg)-1][lg],
rmq[l+(1<<lg)-1][c+(1<<lg)-1][lg]));
}
fclose(fin);
fclose(fout);
return 0;
}