Pagini recente » Cod sursa (job #2445820) | Cod sursa (job #2893045) | Cod sursa (job #1484007) | Cod sursa (job #942890) | Cod sursa (job #1679128)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
const int N = 505;
int n, m, a, b, v[N], r[N][18][18], log[N];
int maxi(int x, int y) {
return x > y ? x : y;
}
int maxi(int x, int y, int m, int n) {
return maxi(maxi(x, y), maxi(m, n));
}
int main() {
in>>n>>m;
for(int i = 1; i <= n; i++) {
in>>v[i];
}
for(int i = 2; i <= n; i++)
log[i]=1+log[i/2];
for(int i = 1; i <= n; i++) {
for(int j = 1; (1<<j) <= i; j++)
for (int k = 1; (1 << k) <= n; k++) {
if (i - (1 << (k - 1)) < 0 || j - (1 << (k - 1)) < 0)
r[i][j][k] = maxi(r[i][j][k-1], r[i][j-(1<<(k-1))][k-1], r[i-(1<<(k-1))][j][k-1], r[i-(1<<(k-1))][j-(1<<(k-1))][k-1]);
}
}
int l, k;
while (m--) {
in >> a >> b >> k;
a += k - 1;
b += k - 1;
l = log[k];
out<<maxi(r[a][b][l], r[a][b+(1<<l)-1][l], r[a+(1<<l)-1][b][l], r[a+(1<<l)-1][b+(1<<l)-1][l])<<'\n';
}
return 0;
}