Pagini recente » Cod sursa (job #645808) | Cod sursa (job #1630123) | Cod sursa (job #2424993) | Cod sursa (job #1168999) | Cod sursa (job #3269493)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n, q, rmq[10][503][503], expo[503];
int main()
{
fin >> n >> q;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++) fin >> rmq[0][i][j];
for(int p=1, lat=2; lat<=n; p++, lat *= 2) {
for(int i1=1; i1<=n-lat+1; i1++) {
for(int j1=1; j1<=n-lat+1; j1++) {
int i2 = i1 + (1 << (p - 1));
int j2 = j1 + (1 << (p - 1));
rmq[p][i1][j1] = max({rmq[p - 1][i1][j1], rmq[p - 1][i1][j2], rmq[p - 1][i2][j1], rmq[p - 1][i2][j2]});
}
}
}
expo[1] = 0;
for(int i=2; i<=n; i++) expo[i] = expo[i / 2] + 1;
while(q--) {
int i1, j1, lat; fin >> i1 >> j1 >> lat;
int putere = expo[lat];
int lung = (1 << putere);
int i2 = i1 + lat - lung, j2 = j1 + lat - lung;
fout << max({rmq[putere][i1][j1], rmq[putere][i1][j2], rmq[putere][i2][j1], rmq[putere][i2][j2]}) << '\n';
}
return 0;
}