Pagini recente » Cod sursa (job #2729531) | Cod sursa (job #1992491) | Cod sursa (job #1655730) | Cod sursa (job #2235742) | Cod sursa (job #448141)
Cod sursa(job #448141)
#include <iostream>
using namespace std;
int N, M, log[501], rmq[10][501][501];
int maxim(int a, int b, int c, int d) {
return max(max(a, b), max(c, d));
}
int main() {
FILE *f1=fopen("plantatie.in", "r"), *f2=fopen("plantatie.out", "w");
int i, j, k, p, q, c;
fscanf(f1, "%d %d\n", &N, &M);
for(i=1; i<=N; i++) {
for(j=1; j<=N; j++) {
fscanf(f1, "%d", &rmq[0][i][j]);
}
}
log[1] = 0; log[2] = 1;
for(i=3; i<=N; i++) {
log[i] = log[i >> 1] + 1;
}
for(p=1; (1 << p)<=N; p++) {
for(i=1; i<=N; i++) {
for(j=1; j<=N; j++) {
c = 1 << (p-1);
rmq[p][i][j] = maxim(rmq[p-1][i][j], rmq[p-1][i + c][j], rmq[p-1][i][j + c], rmq[p-1][i + c][j + c]);
}
}
}
while(M--) {
fscanf(f1, "%d %d %d\n", &i, &j, &k);
p = log[k];
c = (1 << p);
int sol = 0;
sol = maxim(rmq[p][i][j], rmq[p][i + k - c][j], rmq[p][i][j + k - c], rmq[p][i + k - c][j + k - c]);
fprintf(f2, "%d\n", sol);
}
fclose(f1); fclose(f2);
return 0;
}