Pagini recente » Cod sursa (job #2675798) | Cod sursa (job #1511825) | Cod sursa (job #2913459) | Cod sursa (job #1572677) | Cod sursa (job #170161)
Cod sursa(job #170161)
#include<fstream>
//#include<iostream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
#define Max 501
#define LgMax 10
int n,m;
int rmq[LgMax][Max][Max];
int lg[Max];
int main()
{
int i,j,k,t,l;
//cout<<"Citire...\n";
fin>>n>>m;
//cout<<n<<' '<<m<<'\n';
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
//fin>>k;
// cout<<k<<' ';
fin>>rmq[0][i][j];
//cout<<rmq[0][i][j]<<' ';
}
//cout<<'\n';
}
//cout<<"Lg...\n";
for(i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
//cout<<"Compute...\n";
for(k=1;k<=lg[n];k++)
{
t=1<<k;
for(i=1;i+t-1<=n;i++)
for(j=1;j+t-1<=n;j++)
{
rmq[k][i][j]=max(rmq[k-1][i][j],rmq[k-1][i+t/2][j]);
rmq[k][i][j]=max(rmq[k][i][j],rmq[k-1][i][j+t/2]);
rmq[k][i][j]=max(rmq[k][i][j],rmq[k-1][i+t/2][j+t/2]);
}
}
//cout<<"Query...\n";
while(m--)
{
fin>>i>>j>>l;
//cout<<i<<' '<<j<<' '<<l<<'\n';
k=lg[l];
t=max(rmq[k][i][j],rmq[k][i+l-(1<<k)][j]);
t=max(t,rmq[k][i][j+l-(1<<k)]);
t=max(t,rmq[k][i+l-(1<<k)][j+l-(1<<k)]);
fout<<t<<'\n';
}
return 0;
}