Pagini recente » Cod sursa (job #2561728) | Cod sursa (job #1035539) | Cod sursa (job #2187841) | Cod sursa (job #2224060) | Cod sursa (job #2563882)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int n,a[505][505],q,l,c,lung,rmq[10][505][505],lg[505],puteri[10],dif,ln;
int main()
{
f>>n>>q;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
f>>a[i][j];
rmq[0][i][j]=a[i][j];
}
lg[1]=0;
for(int i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
puteri[0]=1;
for(int i=1;i<=lg[n];i++)
puteri[i]=puteri[i-1]*2;
for(int z=1;z<=lg[n];z++)
{
for(int i=1;i+puteri[z]-1<=n;i++)
for(int j=1;j+puteri[z]-1<=n;j++)
rmq[z][i][j]=max(max(rmq[z-1][i][j],rmq[z-1][i][j+puteri[z-1]]),max(rmq[z-1][i+puteri[z-1]][j],rmq[z-1][i+puteri[z-1]][j+puteri[z-1]]));
}
for(int i=1;i<=q;i++)
{
f>>l>>c>>lung;
ln=lg[lung];
g<<max(max(rmq[ln][l][c],rmq[ln][l+lung-puteri[ln]][c+lung-puteri[ln]]),max(rmq[ln][l][c+lung-puteri[ln]],rmq[ln][l+lung-puteri[ln]][c+lung-puteri[ln]]))<<endl;
}
}