Pagini recente » Cod sursa (job #2681597) | Cod sursa (job #2237796) | Cod sursa (job #2738185) | Cod sursa (job #1359337) | Cod sursa (job #3288939)
#include <bits/stdc++.h>
//#pragma GCC optimize("O3,unroll-loops")
//#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
//#define fin cin
//#define fout cout
using namespace std;
using ll = long long;
using dbl = double;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
const int nmax = 501;
int n,q;
int rmq[nmax][nmax][30];
int exponent[nmax];
int main() {
for (int i = 2; i <= nmax; i++) {
exponent[i] = 1 + exponent[i / 2];
}
fin >> n >> q;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
fin >> rmq[i][j][0];
}
}
for (int p = 1; (1 << p) <= n; p++) {
for (int i1 = 1; i1 <= n; i1++) {
const int len = (1 << (p - 1));
int i2 = min(n,i1 + len);
for (int j1 = 1; j1 <= n; j1++) {
int j2 = min(n,j1 + len);
rmq[i1][j1][p] = max({rmq[i1][j1][p-1],rmq[i1][j2][p-1],
rmq[i2][j1][p-1],rmq[i2][j2][p-1]});
}
}
}
while (q--) {
int l,r,len;
fin >> l >> r >> len;
const int e = exponent[len];
const int p = (1 << e);
int i1 = l,
i2 = l + len - p,
j1 = r,
j2 = r + len - p;
i2 = min(i2,n);
j2 = min(j2,n);
fout << max({rmq[i1][j1][e],rmq[i1][j2][e],
rmq[i2][j1][e],rmq[i2][j2][e]}) << '\n';
}
return 0;
}