Pagini recente » Cod sursa (job #1497804) | Cod sursa (job #1554448) | Istoria paginii runda/avram_iancu_10/clasament | Istoria paginii runda/am_piramide/clasament | Cod sursa (job #1774056)
#include <fstream>
using namespace std;
long long n,m,i,p,a[505],j,rmq[10][505][505],L,l,x,y,k,q,w;
int main()
{
ifstream f("plantatie.in");
ofstream g("plantatie.out");
p=2;
for(i=1; p<500; i++)
{
a[p]=1;
p*=2;
}
for(i=3; i<=500; i++)
a[i]+=a[i-1];
f>>n>>m;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
f>>rmq[0][i][j];
for(i=1; 1<<i <=n; i++)
{
L=1<<i;
l=L/2;
for(k=1; k<=n-L+1; k++)
for(j=1; j<=n-L+1; j++)
{
rmq[i][k][j]=max(rmq[i-1][k][j],rmq[i-1][k][j+l]);
rmq[i][k][j]=max(rmq[i][k][j],rmq[i-1][k+l][j]);
rmq[i][k][j]=max(rmq[i][k][j],rmq[i-1][k+l][j+l]);
}
i=i;
}
for(i=1; i<=m; i++)
{
f>>x>>y>>k;
j=a[k];
l=1<<j;
q=max(rmq[j][x][y],rmq[j][x][y+k-l]);
w=max(rmq[j][x+k-l][y],rmq[j][x+k-l][y+k-l]);
g<<max(q,w)<<'\n';
}
f.close(); g.close();
return 0;
}