Pagini recente » Cod sursa (job #1616656) | Cod sursa (job #422751) | Cod sursa (job #816898) | Cod sursa (job #1984983) | Cod sursa (job #3274406)
#include <fstream>
#include <math.h>
using namespace std;
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
int rmq[501][501][10];
int maxa(int a,int b,int c,int d){
return max(max(a,b),max(c,d));
}
int main()
{
int n,m,i,j,put,put1,a,b,l;
cin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>rmq[i][j][0];
for(put=1;put<=9;put++){
put1=(1<<put);
for(i=1;i<=n-put1+1;i++)
for(j=1;j<=n-put1+1;j++)
rmq[i][j][put]=maxa(rmq[i][j][put-1],rmq[i+put1/2][j][put-1],rmq[i][j+put1/2][put-1],rmq[i+put1/2][j+put1/2][put-1]);
}
for(i=1;i<=m; i++){
cin>>a>>b>>l;
put=log2(l);
cout<<maxa(rmq[a][b][put],rmq[a+l-(1<<(put))][b][put],rmq[a][b+l-(1<<(put))][put],rmq[a+l-(1<<(put))][b+l-(1<<(put))][put])<<"\n";
}
return 0;
}