Pagini recente » Cod sursa (job #2110299) | Cod sursa (job #3032097) | Cod sursa (job #2952396) | Cod sursa (job #2647464) | Cod sursa (job #2647852)
#include <bits/stdc++.h>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int rmq[505][505][30];
int lgg[505];
int main()
{
int n,m;
in>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
in>>rmq[i][j][0];
lgg[1]=0;
for(int i=2;i<=n;i++)
lgg[i]=lgg[i/2]+1;
for(int k=1;(1<<k)<=n;k++)
{
int d=1<<(k-1);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
rmq[i][j][k]=max(max(rmq[i][j][k-1],rmq[i][j+d][k-1]),max(rmq[i+d][j][k-1],rmq[i+d][j+d][k-1]));
}
while(m--)
{
int a;
int b;
int k;
in>>a>>b>>k;
int ans=0;
// cout<<a<<" "<<b<<" "<<k<<"\n"<<"\n";
// while((1<<(lg+1))<=k)
// lg++;
// cout<<k<<" "<<lg<<" "<<lgg[k]<<"\n";
ans=max(rmq[a][b][lgg[k]],rmq[a][b+k-(1<<lgg[k])][lgg[k]]);
ans=max(ans,max(rmq[a+k-(1<<lgg[k])][b][lgg[k]],rmq[a+k-(1<<lgg[k])][b+k-(1<<lgg[k])][lgg[k]]));
out<<ans;
out<<"\n";
}
return 0;
}