Pagini recente » Cod sursa (job #1384505) | Cod sursa (job #2375715) | Cod sursa (job #2350511) | Cod sursa (job #2979373) | Cod sursa (job #2615393)
#include <iostream>
#include <fstream>
#include <tgmath.h>
using namespace std;
int rmq[11][500][500], m[500][500], N, M;
int main()
{
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int i,j,k,l,p;
fin >> N >> M;
for (i = 1; i <= N; i++)
for (j = 1; j <= N; j++)
{
fin >> m[i][j];
rmq[0][i][j] = m[i][j];
}
for (k = 1; (1 << k) <= N ; k++)
for(i = 1; i <= N; i++)
for (j = 1; j <= N; j++)
rmq[k][i][j] = max(rmq[k-1][i][j],max(rmq[k-1][i][j + (1 << (k-1))], max(rmq[k-1][i + (1 << (k-1))][j], rmq[k-1][i + (1 << (k-1))][j + (1 << (k-1))])));
/*for (k = 1; (1 << k) <= N ; k++)
{for(i = 1; i <= N; i++)
{for (j = 1; j <= N; j++)
cout << rmq[k][i][j] << " ";
cout<<endl;}
cout << endl;}*/
for (l = 0; l < M; l++)
{
fin >> i >> j >> k;
p = (int)log2(k);
fout << max(rmq[p][i][j], max(rmq[p][i][j + k - (1 << p)], max(rmq[p][i + k - (1 << p)][j], rmq[p][i + k - (1 << p)][j + k - (1 << p)]))) << '\n';
}
return 0;
}