Pagini recente » Cod sursa (job #534976) | Cod sursa (job #2247308) | Cod sursa (job #781337) | Cod sursa (job #2064976) | Cod sursa (job #1680757)
#include <stdio.h>
#define nmax 505
#define logn 9
int r[nmax][nmax][logn],log[nmax];
int maxim(int a,int b){
if(a>b)
return a;
return b;
}
int main(){
FILE *fin,*fout;
fin=fopen("plantatie.in","r");
fout=fopen("plantatie.out","w");
int i,j,k,l,n,m,a,b,c,put,rasp;
fscanf(fin,"%d%d",&n,&m);
for(i=2;i<=n;i++)
log[i]=1+log[i/2];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
fscanf(fin,"%d",&r[i][j][0]);
for(k=1;(1<<k)<=i+j-maxim(i,j);k++){
put=1<<(k-1);
r[i][j][k]=maxim(r[i][j-put][k-1],r[i-put][j][k-1]);
r[i][j][k]=maxim(r[i][j][k],r[i][j][k-1]);
r[i][j][k]=maxim(r[i][j][k],r[i-put][j-put][k-1]);
}
}
for(i=1;i<=m;i++){
fscanf(fin,"%d%d%d",&a,&b,&c);
l=log[c];
rasp=maxim(r[a+c-1][b+c-1][l],r[a+(1<<l)-1][b+(1<<l)-1][l]);
rasp=maxim(rasp,r[a+(1<<l)-1][b+c-1][l]);
rasp=maxim(rasp,r[a+c-1][b+(1<<l)-1][l]);
fprintf(fout,"%d\n",rasp);
}
fclose(fin);
fclose(fout);
return 0;
}