Pagini recente » Cod sursa (job #2700870) | Cod sursa (job #1898100) | Cod sursa (job #2670947) | Cod sursa (job #1070282) | Cod sursa (job #3161628)
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int rmq[11][501][501], exp[1001];
inline int maxim(int a, int b)
{
if(a>b)
{
return a;
}
return b;
}
int main()
{
int n, m, i, j, i2, j2, x, y, e, l, lat, p, i1;
fin>>n>>m;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
fin>>rmq[0][i][j];
}
}
for(p=1, lat=2;lat<=n;p++, lat*=2)
{
for(i=1;i<=n-lat+1;i++)
{
for(j=1;j<=n-lat+1;j++)
{
i2=i+(lat>>1);
j2=j+(lat>>1);
rmq[p][i][j]=maxim(maxim(rmq[p-1][i][j], rmq[p-1][i][j2]), maxim(rmq[p-1][i2][j2], rmq[p-1][i2][j]));
}
}
}
exp[1]=0;
for(i=2;i<=n;i++)
{
exp[i]=1+exp[i/2];
}
for(i1=1;i1<=m;i1++)
{
fin>>x>>y>>lat;
e=exp[lat];
l=1<<e;
j2=y+lat-l;
i2=x+lat-l;
fout<<maxim(maxim(rmq[e][x][y], rmq[e][x][j2]), maxim(rmq[e][i2][j2], rmq[e][i2][y]))<<"\n";
}
}