Pagini recente » Cod sursa (job #1327145) | Cod sursa (job #1021456) | Cod sursa (job #1532373) | Cod sursa (job #2660543) | Cod sursa (job #1896775)
#include <iostream>
#include <fstream>
#define Nmax 510
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int a[Nmax][Nmax],rmq[12][Nmax][Nmax];
int log[Nmax],n,m;
int main()
{
f>> n >> m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
f>> a[i][j];
rmq[0][i][j]=a[i][j];
}
for(int i=2;i<=n;i++) log[i]=log[i/2]+1;
for(int k=1;(1<<k)<=n;k++)
{
for(int i=1;i+(1<<k)<=n+1;i++)
{
for(int j=1;j+(1<<k)<=n+1;j++)
{
rmq[k][i][j]=max(rmq[k-1][i][j],rmq[k-1][i+(1<<(k-1))][j]);
rmq[k][i][j]=max(rmq[k][i][j],max(rmq[k-1][i][j+(1<<(k-1))],rmq[k-1][i+(1<<(k-1))][j+(1<<(k-1))]));
}
}
}
int x,y,k,x1,y1,sol,l,p;
for(int i=0;i<m;i++)
{
f>> x >> y >> k;
x1=x+k-(1<<log[k]);
y1=x+k-(1<<log[k]);
sol=max(rmq[log[k]][x][y],max(rmq[log[k]][x][y1],max(rmq[log[k]][x1][y],rmq[log[k]][x1][y1] )));
g << sol << "\n";
}
return 0;
}