Pagini recente » Cod sursa (job #2537425) | Cod sursa (job #1734522) | Cod sursa (job #1253128) | Cod sursa (job #2819694) | Cod sursa (job #3230547)
#include <fstream>
#include <algorithm>
#include <cmath>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int a[501][501][10]; //log(2)500 < 9
int main()
{
int m, n;
f>>n>>m;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
f>>a[i][j][0];
int LOG = log2(n);
for (int k = 1; k <= LOG; k++)
{
int length = 1 << k;
for (int i = 0; i + length - 1 < n; i++)
for (int j = 0; j + length - 1 < n; j++)
{
int maxSus = max(a[i][j][k - 1], a[i][j + length/2][k - 1]);
int maxJos = max(a[i + length/2][j][k - 1], a[i + length/2][j + length/2][k - 1]);
a[i][j][k] = max(maxSus, maxJos);
}
}
for (int k = 0; k < m; k++)
{
int i, j, l;
f>>i>>j>>l;
int LOG = log2(l);
int subSqLength = 1 << LOG;
int maxSus = max(a[i][j][LOG], a[i][j + l - subSqLength][LOG]);
int maxJos = max(a[i + l - subSqLength][j][LOG], a[i + l - subSqLength][j + l - subSqLength][LOG]);
g<<max(maxSus, maxJos)<<"\n";
}
return 0;
}