Pagini recente » Cod sursa (job #2440258) | Cod sursa (job #1395512) | Cod sursa (job #1652805) | Cod sursa (job #3247412) | Cod sursa (job #1977907)
#include <stdio.h>
#include <stdlib.h>
int v[500][500][10];
int log[501];
int max(int a,int b,int c,int d)
{
int m=a;
if(b>m)
m=b;
if(c>m)
m=c;
if(d>m)
m=d;
return m;
}
int main()
{
int n,m,i,j,k,x,y,dist,dif,rez;
FILE*fi,*fo;
fi=fopen("plantatie.in","r");
fo=fopen("plantatie.out","w");
fscanf(fi,"%d%d",&n,&m);
for(i=0; i<n; i++)
for(j=0; j<n; j++)
{
fscanf(fi,"%d",&v[i][j][0]);
for(k=1; (1<<k)<=j && (1<<k)<=i; k++)
{
v[i][j][k]=max(v[i][j][k-1],v[i][j-(1<<(k-1))][k-1],v[i-(1<<(k-1))][j][k-1],v[i-(1<<(k-1))][j-(1<<(k-1))][k-1]);
}
}
for(i=2; i<=500; i++)
log[i]=1+log[i/2];
for(i=0; i<m; i++)
{
fscanf(fi,"%d%d%d",&x,&y,&dist);
dist--;
x--;
y--;
dif=log[dist];
rez=max(v[x+(1<<dif)][y+(1<<dif)][dif],v[x+dist][y+(1<<dif)][dif],v[x+(1<<dif)][y+dist][dif],v[x+dist][y+dist][dif]);
fprintf(fo,"%d\n",rez);
}
fclose(fi);
fclose(fo);
return 0;
}