Pagini recente » Cod sursa (job #1085470) | Cod sursa (job #1520311) | Cod sursa (job #820556) | Cod sursa (job #2612775) | Cod sursa (job #2138510)
#include <bits/stdc++.h>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
const int nx=502;
int n,m,rmq[20][nx][nx],i,j,k,lg[nx],ii,jj,ans,p;
void build ()
{
in>>n>>m;
for(i=1; i<=n; i++)
{
if(i>=2) lg[i]=lg[i/2]+1;
for(j=1; j<=n; j++)
in>>rmq[0][i][j];
}
for(k=1; (1<<k)<=n; k++)
for(i=1; i<=n-(1<<(k-1)); i++)
for(j=1; j<=n-(1<<(k-1)); 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))]));
}
int main()
{
build();
for(;m;m--)
{
in>>i>>j>>k;
p=lg[k];
out<<max(max(rmq[p][i][j],rmq[p][i+k-(1<<p)][j+k-(1<<p)]),
max(rmq[p][i+k-(1<<p)][j],rmq[p][i][j+k-(1<<p)]))<<'\n';
}
return 0;
}