Pagini recente » Cod sursa (job #2293680) | Cod sursa (job #692018) | Cod sursa (job #1886995) | Cod sursa (job #1620676) | Cod sursa (job #2747788)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int dp[505][505][10], mat[505][505];
int main()
{
int n, m; fin >> n >> m;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
{
fin >> mat[i][j];
dp[i][j][0]=mat[i][j];
}
for(int p=1; p<10; p++)
for(int i=1; i<=n ; i++)
for(int j=1; j<=n; j++)
dp[i][j][p]=max(dp[i][j][p-1], max(dp[i][j+(1<<(p-1))][p-1], max(dp[i+(1<<(p-1))][j][p-1], dp[i+(1<<(p-1))][j+(1<<(p-1))][p-1])));
// for(int p=0; p<=3; p++)
// {
// for(int i=1; i<=n; i++)
// {
// for(int j=1; j<=n; j++)
// fout << dp[i][j][p] << " ";
// fout << "\n";
// }
// fout << "\n";
// fout << "\n";
// }
for(int i=1; i<=m; i++)
{
int l, c, k; fin >> l >> c >> k;
int p=1;
while((1<<p)<=k) p++;
p--;
fout << max(dp[l][c][p], max(dp[l][c+k-(1<<p)][p], max(dp[l+k-(1<<p)][c][p], dp[l+k-(1<<p)][c+k-(1<<p)][p]))) << "\n";
}
return 0;
}