Pagini recente » Cod sursa (job #840731) | Cod sursa (job #2274850) | Cod sursa (job #2113180) | Cod sursa (job #878718) | Cod sursa (job #1685757)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("plantatie.in");
ofstream out ("plantatie.out");
const int N_max=505;
const int L=13;
int r[N_max][N_max][L], log[N_max];
int n,m;
int maxim ( int x, int y, int z, int t )
{
if ( x >= y && x >= z && x >= y )
return x;
if ( y >= x && y >= z && y >= t )
return y;
if ( z >= x && z >= y && z >= t )
return z;
return t;
}
int minim(int a,int b)
{
if(a<b)
return a;
else
return b;
}
int main()
{
in>>n>>m;
int i,j,k,a,b,l,p,lin,col,rez, var;
for ( i = 1; i <= n; i++ )
for ( j = 1; j <= n; j++ )
in >> r[i][j][0];
log[1]=0;
for(i=1; i<=n; i++)
log[i]=1+log[i/2];
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
for(k=1; (1<<k) <= i && (1<<k)<=j ; k++)
{
p = 1<<(k-1);
r[i][j][k] = maxim( r[i][j][k-1], r[i-p][j][k-1], r[i][j-p][k-1], r[i-p][j-p][k-1] );
}
for(i=1; i<=m; i++)
{
in>>a>>b>>l;
lin=a+l-1;
col=b+l-1;
p = log[l];
var=1<<p;
rez= maxim( r[lin][col][p], r[ lin+var ][col][p] , r[lin][col+var][p], r[a+var][b+var][p] );
out<<rez<<'\n';
}
return 0;
}