Pagini recente » Cod sursa (job #2297090) | Cod sursa (job #2810112) | Cod sursa (job #2131784) | Cod sursa (job #2873025) | Cod sursa (job #1602151)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n,M,P2[515],rmq[505][505][11],a[505][505];
void Build_P2()
{
P2[1] = 0;
for(int i = 2;i<=n;i++)
P2[i] = 1+P2[i/2];
}
void Read()
{
int i,j;
fin>>n>>M;
for(i = 1 ; i <= n ; i++)
for(j = 1; j <= n ; j++)
fin>>a[i][j];
}
void RMQ()
{
int i,j,k,N,p;
N = P2[n];
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
rmq[i][j][0] = a[i][j];
for(k = 1; k <= N; k++)
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
{
p = 1<<(k-1);
rmq[i][j][k] = max(max(rmq[i][j][k-1],rmq[i+p][j][k-1]),max(rmq[i][j+p][k-1],rmq[i+p][j+p][k-1]));
}
}
void Write()
{
int MX,p,i,j,k;
while(M--)
{
fin>>i>>j>>k;
p = P2[k];
MX = max(max(rmq[i][j][p],rmq[i][j+k-(1<<p)][p]),max(rmq[i+k-(1<<p)][j][p],rmq[i+k-(1<<p)][j+k-(1<<p)][p]));
fout<<MX<<"\n";
}
}
int main()
{
Read();
Build_P2();
RMQ();
Write();
fout.close();
return 0;
}