Pagini recente » Cod sursa (job #739814) | Cod sursa (job #1650592) | Cod sursa (job #1736147) | Cod sursa (job #123864) | Cod sursa (job #170168)
Cod sursa(job #170168)
#include<fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
#define Max 501
#define LgMax 10
int n,m;
int rmq[LgMax][Max][Max];
int lg[Max];
int main()
{
int i,j,k,t,l;
fin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
fin>>rmq[0][i][j];
for(i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
for(k=1;k<=lg[n];k++)
{
t=1<<k;
for(i=1;i+t-1<=n;i++)
for(j=1;j+t-1<=n;j++)
{
rmq[k][i][j]=max(rmq[k-1][i][j],rmq[k-1][i+t/2][j]);
rmq[k][i][j]=max(rmq[k][i][j],rmq[k-1][i][j+t/2]);
rmq[k][i][j]=max(rmq[k][i][j],rmq[k-1][i+t/2][j+t/2]);
}
}
while(m--)
{
fin>>i>>j>>l;
k=lg[l];
t=max(rmq[k][i][j],rmq[k][i+l-(1<<k)][j]);
t=max(t,rmq[k][i][j+l-(1<<k)]);
t=max(t,rmq[k][i+l-(1<<k)][j+l-(1<<k)]);
fout<<t<<'\n';
}
return 0;
}