Pagini recente » Cod sursa (job #1965211) | Cod sursa (job #2924330) | Cod sursa (job #2282902) | Cod sursa (job #1150688) | Cod sursa (job #170605)
Cod sursa(job #170605)
#include <fstream>
#define MAX 501
#define maxi(a, b) ((a) > (b) ? (a) : (b))
using namespace std;
int a[MAX][MAX][10], val[MAX][MAX], lg[MAX];
int m, n;
int main()
{
int i, j, k, x, y, p;
ifstream fin("plantatie.in");
fin >> n >> m;
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
fin >> val[i][j];
lg[1] = 0;
for (i = 2; i <= n; i++)
lg[i] = lg[i/2] + 1;
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
a[i][j][0] = val[i][j];
for (k = 1; (1 << k) <= n; k++)
for (i = 1; i + (1 << (k-1)) <= n; i++)
for (j = 1; j + (1 << (k-1)) <= n; j++)
{
x = i + (1 << (k-1));
y = j + (1 << (k-1));
a[i][j][k] = maxi(maxi(a[i][j][k-1], a[i][y][k-1]), maxi(a[x][j][k-1], a[x][y][k-1]));
}
ofstream fout("plantatie.out");
for (; m > 0; m--)
{
fin >> i >> j >> k;
p = lg[k];
x = i + k - (1 << p);
y = j + k - (1 << p);
fout << maxi(maxi(a[i][j][p], a[i][y][p]), maxi(a[x][j][p], a[x][y][p])) << "\n";
}
fin.close();
fout.close();
return 0;
}