Pagini recente » Cod sursa (job #1826241) | Cod sursa (job #785319) | Cod sursa (job #1139811) | Cod sursa (job #1303229) | Cod sursa (job #2276909)
#include <fstream>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int v[501][501],rmq[9][501][501],log[501];
int main()
{
int n,m,i,j,k,c,l;
in>>n>>m;
for(i=2; i<=n; i++)
log[i]=1+log[i/2];
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
in>>v[i][j];
rmq[0][i][j]=v[i][j];
}
for(k=1; k<=log[n]; k++)
for(i=(1<<k); i<=n; i++)
for(j=(1<<k); j<=n; j++)
rmq[k][i][j]=max(max(rmq[k-1][i][j],rmq[k-1][i-(1<<(k-1))][j]),max(rmq[k-1][i][j-(1<<(k-1))],rmq[k-1][i-(1<<(k-1))][j-(1<<(k-1))]));
for(c=1; c<=m; c++)
{
in>>i>>j>>k;
l=log[k];
out<<max(max(rmq[l][i+k-1][j+k-1],rmq[l][i+(1<<l)-1][j+k-1]),max(rmq[l][i+k-1][j+(1<<l)-1],rmq[l][i+(1<<l)-1][j+(1<<l)-1]))<<'\n';
}
return 0;
}