Pagini recente » Cod sursa (job #2777190) | Cod sursa (job #2372186) | Cod sursa (job #1886663) | Cod sursa (job #2839119) | Cod sursa (job #997650)
Cod sursa(job #997650)
#include <iostream>
#include <fstream>
#define DN 555
#define prec_pow (1<<(pow-1))
using namespace std;
int dp[11][DN][DN],n,m;
void build()
{
for(int pow=1;pow<=10;++pow)
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if( i + prec_pow <DN && j + prec_pow <DN)
dp[ pow ][ i ][ j ] = max ( dp[ pow-1 ][ i ][ j ] , max ( dp[ pow-1 ][ i ] [ j + prec_pow ] ,
max ( dp[ pow-1 ][ i + prec_pow ] [ j ] , dp[ pow-1 ][ i + prec_pow ] [ j + prec_pow ] )));
}
int main()
{
ifstream f("plantatie.in");
ofstream g("plantatie.out");
f>>n>>m;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
f>>dp[0][i][j];
build();
for(;m;--m)
{
int x,y,l,pow=0;
f>>x>>y>>l;
for(pow=0 ; (1<<pow) <=l ; ++pow);
--pow;
g<<max ( dp[pow][x][y], max ( dp[pow][x + l -(1<<pow) ][y] , max ( dp[pow][x][y + l -(1<<pow) ] , dp[pow][x + l -(1<<pow) ][y + l -(1<<pow) ] )))<<"\n";
}
return 0;
}