Pagini recente » Cod sursa (job #75960) | Cod sursa (job #3245264) | Cod sursa (job #1677055) | Cod sursa (job #1422822) | Cod sursa (job #2231542)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n,m,i,j,k,nr,l,s;
int rmq[10][505][505], lg[505];
int main() {
fin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
fin>>rmq[0][i][j];
lg[0]=-1;
for(i=1;i<=n;i++)
lg[i]=lg[i-1]+(!(i&(i-1)));
for(k=1;k<=lg[n];k++)
{
l=n-(1<<k)+1;
s=(1<<(k-1));
for(i=1;i<=l;i++)
for(j=1;j<=l;j++)
{
nr=rmq[k-1][i][j];
nr=max(nr, rmq[k-1][i][j+s]);
nr=max(nr, rmq[k-1][i+s][j]);
nr=max(nr, rmq[k-1][i+s][j+s]);
rmq[k][i][j]=nr;
}
}
while(m--)
{
fin>>i>>j>>k;
l=lg[k];
s=(1<<l);
nr=rmq[l][i][j];
nr=max(nr, rmq[l][i][j+k-s]);
nr=max(nr, rmq[l][i+k-s][j]);
nr=max(nr, rmq[l][i+k-s][j+k-s]);
fout<<nr<<"\n";
}
}