Pagini recente » Cod sursa (job #2548497) | Cod sursa (job #2668074) | Cod sursa (job #3238317) | Cod sursa (job #3210734) | Cod sursa (job #2090009)
#include<fstream>
using namespace std;
ifstream fi("plantatie.in");
ofstream fo("plantatie.out");
int n,m,Lg[501],i,j,k,A[501][501][10],t,p,rez;
int main()
{
fi>>n>>m;
Lg[1]=0;
for(i=2; i<=n; i++)
Lg[i]=Lg[i/2]+1;
//A[i][j][k]=maximul din submatricea (i,j) de lat (1<<k)
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
fi>>A[i][j][0];
}
}
for(k=1; k<=9; k++)
for(i=1; i<=n-(1<<k)+1; i++)
for(j=1; j<=n-(1<<k)+1; j++)
A[i][j][k]=max(A[i][j][k-1],max(A[i][j+(1<<(k-1))][k-1],max(A[i+(1<<(k-1))][j][k-1],A[i+(1<<(k-1))][j+(1<<(k-1))][k-1])));
for(t=1; t<=m; t++)
{
fi>>i>>j>>k;
p=Lg[k];
rez=max(A[i][j][p],max(A[i][j+k-(1<<p)][p],max(A[i+k-(1<<p)][j][p],A[i+k-(1<<p)][j+k-(1<<p)][p])));
fo<<rez<<"\n";
}
fi.close();
fo.close();
return 0;
}