Pagini recente » Cod sursa (job #1243063) | Cod sursa (job #664473) | Cod sursa (job #2111947) | Cod sursa (job #2701168) | Cod sursa (job #929122)
Cod sursa(job #929122)
#include<fstream>
using namespace std;
ifstream fin("plantatie.in"); ofstream fout("plantatie.out");
int a[10][502][502], log[502], b[502][502], n, m;
int Querry(int i, int j, int k)
{
int dis = log[k];
return max(
max( a[dis][i][j], a[dis][i + k - (1 << dis)][j + k - (1 << dis)]),
max( a[dis][i][j + k - (1 << dis)], a[dis][i + k - (1 << dis)][j])
);
}
int main()
{
fin >> n >> m;
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= n; ++j)
fin >> a[0][i][j];
for(int i = 2; i <= n; ++i)
log[i] = log[i >> 1] + 1;
for(int k = 1; (1 << k) <= n; ++k)
for(int i = n - 1 << k + 1; i > 0; --i)
for(int j = n - 1 << k + 1; j > 0; --j)
a[k][i][j] = max(
max( a[k - 1][i][j], a[k - 1][i][j + (1 << k) - 1]),
max( a[k - 1][i + (1 << k) - 1][j], a[k - 1][i + (1 << k) - 1][j + (1 << k) - 1])
);
int i, j, k;
while(m--)
{
fin >> i >> j >> k;
fout << Querry(i, j, k) << "\n";
}
fin.close(); fout.close();
return 0;
}