Pagini recente » Cod sursa (job #2373444) | Cod sursa (job #1064025) | Cod sursa (job #2377820) | Cod sursa (job #1660487) | Cod sursa (job #2563857)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("plantie.in");
ofstream g("plantie.out");
int n,a[505][505],q,l,c,lung,rmq[505][505][10],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[i][j][0]=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[i][j][z]=max(max(rmq[i][j][z-1],rmq[i+puteri[z-1]][j][z-1]),max(rmq[i][j+puteri[z-1]][z-1],rmq[i+puteri[z-1]][j+puteri[z-1]][z-1]));
}
for(int i=1;i<=q;i++)
{
f>>l>>c>>lung;
ln=lg[lung];
g<<max(max(rmq[l][c][ln],rmq[l+lung-puteri[ln]][c+lung-puteri[ln]][ln]),max(rmq[l][c+lung-puteri[ln]][ln],rmq[l+lung-puteri[ln]][c][ln]))<<endl;
}
}