Pagini recente » Cod sursa (job #454307) | Cod sursa (job #1274559) | Cod sursa (job #372713) | Cod sursa (job #524563) | Cod sursa (job #2087434)
#include <fstream>
using namespace std;
int a[501][501][10],mat[501][501],log[501];
int main()
{ int n,m,i,j,k,p,q,sol;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
f>>n>>m;
for (i=1;i<=n;++i)
for (j=1;j<=n;++j) {
f>>mat[i][j];
a[i][j][0]=mat[i][j];
}
for (i=2;i<=n;++i)
log[i]=log[i/2]+1;
for (k=1;(1<<k)<=n;++k)
for (i=1;i+(1<<k)-1<=n;++i)
for (j=1;j+(1<<k)-1<=n;++j) {
a[i][j][k]=max(a[i][j][k-1],a[i][j+(1<<(k-1))][k-1]);
a[i][j][k]=max(a[i+(1<<(k-1))][j][k-1],a[i+(1<<(k-1))][j+(1<<(k-1))][k-1]);
}
for (q=1;q<=m;++q) {
f>>i>>j>>k;
sol=0;
p=log[k];
sol=max(a[i][j][p],a[i+k-(1<<p)][j+k-(1<<p)][p]);
sol=max(sol,max(a[i+k-(1<<p)][j][p],a[i][j+k-(1<<p)][p]));
g<<sol<<'\n';
}
return 0;
}