Pagini recente » Cod sursa (job #1443205) | Cod sursa (job #3238179) | Cod sursa (job #615571) | Cod sursa (job #2792504) | Cod sursa (job #1076605)
#include <fstream>
#include <cmath>
using namespace std;
int d[501][501][30];
int ma[501][501];
int main()
{
ifstream in ("plantatie.in");
ofstream out("plantatie.out");
int n, m;
in >> n >> m;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j)
{
in >> ma[i][j];
d[i][j][0] = ma[i][j];
}
for (int i = n; i >= 1; --i)
{
for (int j = n; j >= 1; --j)
{
for (int k = 0; k < log2(n); ++k)
{
d[i][j][k] += max(d[i][j][k - 1], max(d[i][j + (1 << (k - 1))][k - 1], max(d[i + (1 << (k - 1))][j][k - 1], d[i + (1 << (k - 1))][j + (1 << (k - 1))][k - 1])));
//out << "d["<< i << "][" << j << "][" << (1 << k) << "] = " << d[i][j][k] << " ";
}
//out << "\n";
}
//out << "\n";
}
int q = m;
for (int i = 1; i <= q; ++i)
{
int x, y, z; in >> x >> y >> z;
int p = log2(z);
int put = 1 << p;
out << max(d[x][y][p], max(d[x][y + z - put][p], max(d[x + z - put][y][p], d[x + z - put][y + z - put][p]))) << "\n";
}
in .close();
out.close();
return 0;
}