Pagini recente » Cod sursa (job #2255078) | Cod sursa (job #56237) | Cod sursa (job #1901477) | Cod sursa (job #379371) | Cod sursa (job #2402723)
#include <bits/stdc++.h>
#define Dim 504
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int N,Q,rmq[10][Dim][Dim],x;
int a,b,r1,r2,r3,r4,q1,q2,lat;
int main()
{
f>>N>>Q;
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
{
f>>x;
rmq[0][i][j]=x;
}
for(int k=1;(1<<k)<=N;k++)
for(int i=1;i+(1<<k)-1<=N;i++)
for(int j=1;j+(1<<k)-1<=N;j++)
{
r1=rmq[k-1][i][j];
r2=rmq[k-1][i][j+(1<<(k-1))];
r3=rmq[k-1][i+(1<<(k-1))][j];
r4=rmq[k-1][i+(1<<(k-1))][j+(1<<(k-1))];
q1=max(r1,r2);
q2=max(r3,r4);
rmq[k][i][j]=max(q1,q2);
}
for(int i=1;i<=Q;i++)
{
f>>a>>b>>lat;
int capa=a+lat-1;
int capb=b+lat-1;
lat=log2(lat);
r1=rmq[lat][a][b];
r2=rmq[lat][a][capb-(1<<lat)+1];
r3=rmq[lat][capa-(1<<lat)+1][b];
r4=rmq[lat][capa-(1<<lat)+1][capb-(1<<lat)+1];
q1=max(r1,r2);
q2=max(r3,r4);
g<<max(q1,q2)<<'\n';
}
return 0;
}