Pagini recente » Cod sursa (job #1208582) | Cod sursa (job #607578) | Cod sursa (job #745880) | Cod sursa (job #2649932) | Cod sursa (job #2625898)
#include <iostream>
#include <fstream>
using namespace std;
int p[25],lg[610];
int D[12][510][510];
int n, m, a, b, k;
int main()
{
ifstream f("plantatie.in");
ofstream g("plantatie.out");
f>>n>>m;
int i, j;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
f>>D[0][i][j];
p[0] = 1;
for(int i=1; p[i-1]<=n; i++)
p[i] = p[i-1] * 2;
for(int k=1; p[k]<=n; k++)
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
{
if(i + p[k] <= n + 1 && j + p[k] <= n + 1)
{
D[k][i][j] = max(D[k-1][i][j],max(D[k-1][i][j+p[k-1]],max(D[k-1][i+p[k-1]][j],D[k-1][i+p[k-1]][j+p[k-1]])));
}
}
lg[1] = 0;
for(int i=2; i<600; i++)
lg[i] = lg[i/2]+1;
for(i=1; i<=m; i++)
{
f>>a>>b>>k;
cout<<max(D[lg[k]][a][b],max(D[lg[k]][a][b+(k-p[lg[k]])],max(D[lg[k]][a+(k-p[lg[k]])][b],D[lg[k]][a+(k-p[lg[k]])][b+(k-p[lg[k]])])))<<"\n";
}
return 0;
}