Pagini recente » Cod sursa (job #55399) | Cod sursa (job #654796) | Cod sursa (job #70205) | Cod sursa (job #915827) | Cod sursa (job #197068)
Cod sursa(job #197068)
#include<stdio.h>
int max(int a,int b,int c, int d){
if(b>a)
a=b;
if(d>c)
c=d;
if(a>c)
return a;
return c;
}
int n,m,a[700][700][10],i,j,k,l,b[600];
int main(){
FILE *f=fopen("plantatie.in","r");
fscanf(f,"%d %d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
fscanf(f,"%d",&a[i][j][0]);
for(k=1; (1<<k) <=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j][k]=max(a[i][j][k-1],a[i+(1<<(k-1))][j][k-1],a[i][j+(1<<(k-1))][k-1],a[i+(1<<(k-1))][j+(1<<(k-1))][k-1]);
FILE *g=fopen("plantatie.out","w");
int q=1;
b[1]=0;
b[2]=1;
for(i=3;i<=n;i++){
b[i]=q;
if(i==1<<(q+1)){
q++;
b[i]=q;
}
}
int C,A,B;
for(l=1;l<=m;l++){
fscanf(f,"%d %d %d",&i,&j,&C);
fprintf(g,"%d\n",max (a[i][j][b[C]],a[i][j+C-(1<<b[C])][b[C]],a[i+C-(1<<b[C])][j][b[C]],a[i+C-(1<<b[C])][j+C-(1<<b[C])][b[C]] ) );
}
fclose(f);
fclose(g);
return 0;
}