Pagini recente » Cod sursa (job #1324918) | Cod sursa (job #2099433) | Monitorul de evaluare | Cod sursa (job #1065853) | Cod sursa (job #484294)
Cod sursa(job #484294)
#include<fstream>
using namespace std;
ifstream q("plantatie.in");
ofstream w("plantatie.out");
int n,m;
int rmq[10][501][501];
int lg[501];
int main()
{int i,j,k,t,l;
q>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
q>>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--)
{q>>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)]);
w<<t<<'\n';}
return 0;}