Pagini recente » Cod sursa (job #2800456) | Cod sursa (job #1107715) | Cod sursa (job #780745) | Cod sursa (job #1952131) | Cod sursa (job #2230363)
#include <fstream>
#define VAL 505
#define PUT 12
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int N, Q, i, j, A, B, X, Y;
int v[VAL][VAL], RMQ[VAL][VAL][PUT];
int ANS, lat, P, cnt, L, C, LOG[VAL];
int main()
{
fin >> N >> Q;
for (i=1; i<=N; i++)
{
for (j=1; j<=N; j++)
{
fin >> v[i][j];
RMQ[i][j][0]=v[i][j];
}
LOG[i]=P;
if (i==2*(1 << P))
P++;
}
for (cnt=1; cnt<=P; cnt++)
{
for (i=1; i+(1 << cnt)-1<=N; i++)
{
for (j=1; j+(1 << cnt)-1<=N; j++)
{
L=i+(1 << (cnt-1));
C=j+(1 << (cnt-1));
RMQ[i][j][cnt]=RMQ[i][j][cnt-1];
RMQ[i][j][cnt]=max(RMQ[i][j][cnt], RMQ[i][C][cnt-1]);
RMQ[i][j][cnt]=max(RMQ[i][j][cnt], RMQ[L][j][cnt-1]);
RMQ[i][j][cnt]=max(RMQ[i][j][cnt], RMQ[L][C][cnt-1]);
}
}
}
for (cnt=1; cnt<=Q; cnt++)
{
fin >> X >> Y >> lat;
A=LOG[lat];
B=(1 << A);
L=X+lat-B;
C=Y+lat-B;
ANS=RMQ[X][Y][A];
ANS=max(ANS, RMQ[X][C][A]);
ANS=max(ANS, RMQ[L][Y][A]);
ANS=max(ANS, RMQ[L][C][A]);
fout << ANS << '\n';
}
fin.close();
fout.close();
return 0;
}