Pagini recente » Cod sursa (job #148496) | Cod sursa (job #512686) | Cod sursa (job #2636694) | Cod sursa (job #3271899) | Cod sursa (job #1688931)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
const int NMAX = 501;
int n,m;
int rmq[NMAX][NMAX][9];
int lg[NMAX];
int main()
{
in>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
in>>rmq[i][j][0];
for(int i=2;i<=n;i++)
lg[i] = lg[i/2] + 1;
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++)
rmq[i][j][k] = max(max(rmq[i][j][k-1],rmq[i+(1<<(k-1))][j][k-1]),
max(rmq[i][j+(1<<(k-1))][k-1],rmq[i+(1<<(k-1))][j+(1<<(k-1))][k-1]));
int x,y,z,p;
for(int i=1;i<=m;i++)
{
in>>x>>y>>z;
p = lg[z];
out<<max(max(rmq[x][y][p],rmq[x+z-(1<<p)][y][p]),
max(rmq[x][y+z-(1<<p)][p],rmq[x+z-(1<<p)][y+z-(1<<p)][p]))<<"\n";
}
in.close();
out.close();
return 0;
}