Pagini recente » Cod sursa (job #2364365) | Cod sursa (job #98055) | Cod sursa (job #3228690) | Cod sursa (job #347173) | Cod sursa (job #3231647)
#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
using namespace std;
int C[600][80000][15], n, m;
int main(){
int i, j, t, lung, x, y, l, val;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
in >> n >> m;
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
{
in >> C[i][j][0];
}
lung = int(log2(n));
for(t = 1; t <= lung; t++)
{
val = 1<<(t-1);
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
if(i + (1<<t) -1 <= n && j + (1<<t) -1 <= n)
{
int max1 = max(C[i][j][t-1], C[i+val][j][t-1]);
int max2 = max(C[i][j+val][t-1], C[i+val][j+val][t-1]);
C[i][j][t] = max(max1, max2);
}
}
int rez, put;
for(i = 1; i <= m; i++)
{
in >> x >> y >> l;
put = int(log2(l));
val = 1 << put;
int max1 = max(C[x][y][put], C[x - val + l][y][put]);
int max2 = max(C[x][y - val + l][put], C[x - val + l][y - val + l][put]);
rez = max(max1, max2);
out << rez << "\n";
}
return 0;
}