Pagini recente » Cod sursa (job #54845) | Cod sursa (job #2108541) | Cod sursa (job #2829678) | Cod sursa (job #2387147) | Cod sursa (job #677925)
Cod sursa(job #677925)
#include<fstream>
#define Nmax 502
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int A[Nmax][Nmax][Nmax],i,j,k,x,y,p[Nmax],n,m,h,sol;
int max(int a,int b){
if(a>b)
return a;
return b;
}
int main (){
f>>n>>m;
for( i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>A[i][j][0];
for(i=2;i<=Nmax;i++)
p[i]=p[i>>1]+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(max(max(A[i][j][k-1],A[i+(1<<(k-1))][j][k-1]),A[i+(1<<(k-1))][j+(1<<(k-1))][k-1]),A[i][j+(1<<(k-1))][k-1]);
}
}
}
int h;
while ( m-- ) {
f>>x>>y>>k;
h=p[k];
sol=0;
sol=max(sol,A[x][y][h]);
sol=max(sol,A[x+k-(1<<h)][y][h]);
sol=max(sol,A[x][y+k-(1<<h)][h]);
sol=max(sol,A[x+k-(1<<h)][y+k-(1<<h)][h]);
g<<sol<<"\n";
}
return 0;
}