Pagini recente » Cod sursa (job #878005) | Cod sursa (job #193371) | Cod sursa (job #507928) | Cod sursa (job #2922950) | Cod sursa (job #2642002)
#include <bits/stdc++.h>
using namespace std;
ifstream ci("plantatie.in");
ofstream cou("plantatie.out");
int n,m;
int rmq[505][505][50];
int v[505][505];
int lg[505];
void Rmq()
{
int i,j,k;
int a,b,c,d,sol;;
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
//cout<<i<<" "<<j<<"\n";
k=1;
sol=0;
a=v[i][j];
b=v[i+1][j];
c=v[i][j+1];
d=v[i+1][j+1];
//cout<<a<<" "<<b<<" "<<c<<" "<<d<<"\n";
sol=max(a,b);
sol=max(sol,c);
sol=max(sol,d);
rmq[i][j][k]=sol;
}
}
for(k=2; (1<<k)-1<=n; k++)
{
for(i=1; (1<<k)+i-1<=n; i++)
{
for(j=1; (1<<k)+j-1<=n; j++)
{
a=rmq[i][j][k-1];
b=rmq[i+(1<<(k-1))][j][k-1];
c=rmq[i][j+(1<<(k-1))][k-1];
d=rmq[i+(1<<(k-1))][j+(1<<(k-1))][k-1];
sol=max(a,b);
sol=max(sol,c);
sol=max(sol,d);
rmq[i][j][k]=sol;
//cout<<i<<" "<<j<<" "<<k<<" "<<rmq[i][j][k]<<"\n";
}
}
}
for(i=2; i<=n; i++)
{
lg[i]=lg[i/2]+1;
}
}
int Query(int a,int b,int c)
{
int k;
k=lg[c]+1;
int s1,s2,s4,s3,sol;
s1=rmq[a][b][k-1];
s2=rmq[a+c-(1<<(k-1))][b][k-1];
s3=rmq[a][b+c-(1<<(k-1))][k-1];
s4=rmq[a+c-(1<<(k-1))][b+c-(1<<(k-1))][k-1];
sol=max(s1,s2);
sol=max(sol,s3);
sol=max(sol,s4);
return sol;
}
void citire()
{
ci>>n>>m;
int i,j;
int a,b,c;
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
ci>>v[i][j];
}
}
Rmq();
while(m--)
{
ci>>a>>b>>c;
cou<<Query(a,b,c)<<"\n";
}
}
int main()
{
citire();
return 0;
}