Pagini recente » Cod sursa (job #1018457) | Cod sursa (job #854654) | Cod sursa (job #988295) | Cod sursa (job #1587272) | Cod sursa (job #2054723)
#include<fstream>
#include<cmath>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int n, m, d[503][503][20], i, j, l, i2, j2, k, lg[503];
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>d[i][j][0];
for(k=1;(1<<k)<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
d[i][j][k]=d[i][j][k-1];
d[i][j][k]=max(d[i][j][k], d[i][j+(1<<(k-1))][k-1]);
d[i][j][k]=max(d[i][j][k], d[i+(1<<(k-1))][j][k-1]);
d[i][j][k]=max(d[i][j][k], d[i+(1<<(k-1))][j+(1<<(k-1))][k-1]);
}
for(i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
while(m!=0)
{
f>>i>>j>>l;
i2=i+l-1;
j2=j+l-1;
l=lg[l-1];
d[i][j][l]=max(d[i][j][l], d[i][j2-(1<<l)+1][l]);
d[i][j][l]=max(d[i][j][l], d[i2-(1<<l)+1][j][l]);
d[i][j][l]=max(d[i][j][l], d[i2-(1<<l)+1][j2-(1<<l)+1][l]);
g<<d[i][j][l]<<"\n";
m--;
}
return 0;
}