Pagini recente » Cod sursa (job #1890437) | Cod sursa (job #1125374) | Cod sursa (job #1485944) | Cod sursa (job #1433473) | Cod sursa (job #1697307)
#include <fstream>
using namespace std;
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
int log[505][505];
int r[505][505][18];
int v[505][505];
int minim(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++)
{
cin>>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[j][j-i+1];
current = minim(r[i][j][l], r[i + (1<<l) - 2][j][l]);
biggest = minim(biggest, current);
}
cout<<biggest<<"\n";
}
}
void logaritm(int n)
{
for(int i=1; i<=n; i++)
{
log[i][0] = 0;
for(int j=2; j<=n; j++)
log[i][j] = 1 + log[i][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)<= j ; k++)
r[i][j][k] = minim(r[i][j][k-1], r[i][j - (1<<(k-1)) ][k-1]);
}
}
/*void logartim(int n)
{
int i;
log[1]=0;
for(i=2 ; i<=n ; i++)
log[i]=1+log[i/2];
}*/
int main()
{
int n,m,i,j,k,a;
cin>>n>>m;
for(i=1 ; i<=n ; i++)
for(j=1 ; j<=n ; j++)
cin>>v[i][j];
matrice(v,n);
logaritm(n);
/*for(a=1 ; a<=m ; a++)
{
cin>>i>>j>>k;
}*/
raspuns(m);
cin.close();
cout.close();
return 0;
}