Pagini recente » Cod sursa (job #2846440) | Cod sursa (job #1269460) | Cod sursa (job #931472) | Cod sursa (job #985418) | Cod sursa (job #1430271)
#include <fstream>
#include <algorithm>
using namespace std;
#define inFile "plantatie.in"
#define outFile "plantatie.out"
#define MAX_DIM 500
#define MAX_LOG 8
ifstream in(inFile);
ofstream out(outFile);
int RMQ[MAX_DIM + 1][MAX_DIM + 1][MAX_LOG + 1];
int MaxP2[MAX_DIM + 1];
int main() {
int N, Q, x1, y1, L, i, j, k, P2;
in >> N >> Q;
for(i = 1; i <= N; i++) {
MaxP2[i] = MaxP2[i-1];
if(i&(i-1) == 0) MaxP2[i]++;
for(j = 1; j <= N; j++)
in >> RMQ[i][j][0];
}
for(k = 1; (1<<k) <= N; k++)
for(i = 1; i <= N-(1<<k)+1; i++)
for(j = 1; j <= N-(1<<k)+1; j++)
RMQ[i][j][k] = max(max(RMQ[i][j][k-1] , RMQ[i][j+(1<<(k-1))][k-1]) , max(RMQ[i+(1<<(k-1))][j][k-1] , RMQ[i+(1<<(k-1))][j+(1<<(k-1))][k-1]));
for(k = 1; k <= Q; k++) {
in >> i >> j >> L;
P2 = MaxP2[L];
out << max(max(RMQ[i][j][P2] , RMQ[i][j+L-(1<<P2)][P2]) , max(RMQ[i+L-(1<<P2)][j][P2] , RMQ[i+L-(1<<P2)][j+L-(1<<P2)][P2])) << '\n';
}
return 0;
}