Pagini recente » Cod sursa (job #1098241) | Cod sursa (job #2406147) | Cod sursa (job #1033906) | Cod sursa (job #2235472) | Cod sursa (job #1264705)
#include<fstream>
using namespace std;
ifstream fi("plantatie.in");
ofstream fo("plantatie.out");
const int MAX_N = 502;
const int MAX_LOG_N = 10;
int logaritm[MAX_N],c[MAX_N][MAX_N][MAX_LOG_N];
int i,j,k,n,q,x,y,lung,maxim,aux;
int main(){
fi>>n>>q;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
fi>>c[i][j][0];
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++)
{
maxim=c[i][j][k-1];
aux=c[i][j+(1<<(k-1))][k-1];
if(aux>maxim) maxim=aux;
aux=c[i+(1<<(k-1))][j][k-1];
if(aux>maxim) maxim=aux;
aux=c[i+(1<<(k-1))][j+(1<<(k-1))][k-1];
if(aux>maxim) maxim=aux;
c[i][j][k]=maxim;
}
for(i=2;i<MAX_LOG_N;i++)
logaritm[i]=logaritm[i/2]+1;
for(;q>0;--q)
{
fi>>x>>y>>lung;
k=logaritm[lung];
maxim=c[x][y][k];
aux=c[x][y + lung - (1<<k)][k];
if(aux>maxim) maxim=aux;
aux=c[x + lung - (1<<k)][y][k];
if(aux>maxim) maxim=aux;
aux=c[x + lung - (1<<k)][y + lung - (1<<k)][k];
if(aux>maxim) maxim=aux;
fo<<maxim<<'\n';
}
fi.close();
fo.close();
return 0;
}