Pagini recente » Cod sursa (job #4955) | Cod sursa (job #1583832) | Cod sursa (job #3249098) | Cod sursa (job #618841) | Cod sursa (job #3255646)
#include <fstream>
#define DIM 502
using namespace std;
int n,m,i1,i2,j11,j2,lat,L,len,k;
int r[10][DIM][DIM];
int E[DIM];
inline int maxim(int a, int b){ return (a>b ? a : b);} // de ce?
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int main()
{
fin>>n>>m;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++) fin>>r[0][i][j];
for (int p=1,lat=2; lat<=n; p++,lat*=2){
for (int i1=1;i1<=n-lat+1;i1++){
for (int j11=1;j11<=n-lat+1;j11++)
{
i2=i1+(lat>>1); j2=j11+(lat>>1);
r[p][i1][j11] = max(max(r[p-1][i1][j11],r[p-1][i2][j11]),max(r[p-1][i1][j2],r[p-1][i2][j2]));
}
}
}
E[1] = 0;
for (int i=2;i<=n;i++) E[i] = 1 + E[i/2];
for (;m;m--)
{
fin>>i1>>j11>>L;
k = E[L];
len = (1<<k); /// cea mai mare putere de 2 <= latura
/// patratului de la interogare
i2 = i1+L-len; j2 = j11+L-len;
fout<<max(max(r[k][i1][j11],r[k][i1][j2]),
max(r[k][i2][j11],r[k][i2][j2]))<<"\n";
}
return 0;
}