Pagini recente » Cod sursa (job #1816991) | Cod sursa (job #2848442) | Cod sursa (job #1326030) | Cod sursa (job #2168234) | Cod sursa (job #1700593)
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int log[505];
int r[505][505][18];
int v[505][505];
int maxim(int a,int b)
{
if(a<b)
return b;
return a;
}
/*void raspuns(int m)
{
int biggest, i, l, current, lin, col, lat;
for(int nr=1; nr<=m; nr++)
{
fin>>lin>>col>>lat;
biggest = 0;
for(int i=lin; i<=(lin+lat-1); i++)
for(int j=col; j<=(col+lat-1); j++)
{
l = log[lat-1];
current = maxim(r[i][j][l], r[i + (1<<l) - 2][j][l]);
biggest = maxim(biggest, current);
}
fout<<biggest<<"\n";
}
}*/
void logaritm(int n)
{
for(int j=2; j<=n; j++)
log[j] = 1 + log[j/2];
}
void matrice(int v[ ][505],int n)
{
int i,j,k;
for(i=1 ; i<=n ; i++)
for(j=1 ; j<=n ; j++)
{
r[i][j][0]=v[i][j];
for(k=1 ; (1<<k)<= i && (1<<k) <= j ; k++)
r[i][j][k] = maxim(maxim(r[i][j][k-1], r[i][j-(1<<(k-1))][k-1]),maxim(r[i- (1<<(k-1))][j][k-1],r[i- (1<<(k-1))][j-(1<<(k-1))][k-1]));
}
}
int main()
{
int n,m,i,j,k,a,l;
fin>>n>>m;
for(i=1 ; i<=n ; i++)
for(j=1 ; j<=n ; j++)
fin>>v[i][j];
matrice(v,n);
logaritm(n);
for(a=1 ; a<=m ; a++)
{
fin>>i>>j>>k;
l=log[k];
fout<<maxim(maxim(r[i+(1<<l)-1][j+(1<<l)-1][l],r[i+k-1][j+k-1][l]),
maxim(r[i+k-1][j+(1<<l)-1][l],r[i+(1<<l)-1][j+k-1][l]))<<"\n";
}
//raspuns(m);
fin.close();
fout.close();
return 0;
}