Pagini recente » Cod sursa (job #1386714) | Cod sursa (job #1553074) | Cod sursa (job #1472567) | Cod sursa (job #1993953) | Cod sursa (job #1889543)
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
const int nmax= 500;
const int logmax= 9;
int d[logmax+1][nmax+1][nmax+1];
int main( ) {
int n, m;
fin>>n>>m;
for ( int i= 1; i<=n; ++i ) {
for ( int j= 1; j<=n; ++j ) {
fin>>d[0][i][j];
}
}
for ( int k= 1; (1<<k)<=n; ++k ) {
for ( int i= 1; i+(1<<k)-1<=n; ++i ) {
for ( int j= 1; j+(1<<k)-1<=n; ++j ) {
d[k][i][j]= max(max(d[k-1][i][j], d[k-1][i+(1<<(k-1))][j]), max(d[k-1][i][j+(1<<(k-1))], d[k-1][i+(1<<(k-1))][j+(1<<(k-1))]));
}
}
}
for ( int cnt= 1, i, j, k, p2; cnt<=m; ++cnt ) {
fin>>i>>j>>k;
for ( p2= 0; (1<<(p2+1))<=k; ++p2 ) ;
int sol= max(max(d[p2][i][j], d[p2][i+k-(1<<p2)][j]), max(d[p2][i][j+k-(1<<p2)], d[p2][i+k-(1<<p2)][j+k-(1<<p2)]));
fout<<sol<<"\n";
}
return 0;
}