Pagini recente » Cod sursa (job #68259) | Cod sursa (job #234943) | Cod sursa (job #498041) | Cod sursa (job #455548) | Cod sursa (job #3163800)
#include <iostream>
#include <fstream>
#define nmax 502
using namespace std;
int rmq[nmax][nmax][8];
int n,q,lg[nmax];
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
void log()
{
lg[1]=0;
for(int i=2;i<=n;i++)
lg[i]=lg[i>>1]+1;
}
int maxim(int a,int b,int c,int d)
{
int max1=max(a,b);
int max2=max(c,d);
return max(max1,max2);
}
void rmqf()
{
log();
for(int k=1;k<=lg[n];k++)
{
for(int i=1;i+(1<<k)-1<=n;i++)
{
for(int j=1;j+(1<<k)-1<=n;j++)
{
rmq[i][j][k]=maxim(rmq[i][j][k-1],rmq[i][j+(1<<(k-1))][k-1],rmq[i+(1<<(k-1))][j][k-1],rmq[i+(1<<(k-1))][j+(1<<(k-1))][k-1]);
}
}
}
}
int main()
{
fin>>n>>q;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
fin>>rmq[i][j][0];
}
}
rmqf();
for(int i=1;i<=q;i++)
{
int l,c,k,l2,c2;
fin>>l>>c>>k;
l2=l+k-1;
c2=c+k-1;
fout<<maxim(rmq[l][c][lg[k]],rmq[l2-(1<<lg[k])+1][c][lg[k]],rmq[l][c2-(1<<lg[k])+1][lg[k]],rmq[l2-(1<<lg[k])+1][c2-(1<<lg[k])+1][lg[k]])<<'\n';
}
return 0;
}