Pagini recente » Cod sursa (job #1890940) | Cod sursa (job #2136979) | Cod sursa (job #2807856) | Cod sursa (job #4064) | Cod sursa (job #1045949)
#include <fstream>
#include <iostream>
#include <cmath>
using namespace std;
int a[11][501][501];
int main()
{
int i,j,n,m,h,k,x,y,p,maxi;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>a[0][i][j];
p=1;
while((1<<p)<=n)
{
for(i=1;i<=n-(1<<p)+1;i++)
for(j=1;j<=n-(1<<p)+1;j++)
{
maxi=a[p-1][i][j];
if(a[p-1][i+(1<<(p-1))][j]>maxi)
maxi=a[p-1][i+(1<<(p-1))][j];
if(a[p-1][i+(1<<(p-1))][j+(1<<(p-1))]>maxi)
maxi=a[p-1][i+(1<<(p-1))][j+(1<<(p-1))];
if(a[p-1][i][j+(1<<(p-1))]>maxi)
maxi=a[p-1][i][j+(1<<(p-1))];
a[p][i][j]=maxi;
}
p++;
}
for(i=1;i<=m;i++)
{
f>>x>>y>>k;
h=(int)log2(k);
if((1<<h)==k)
g<<a[h][x][y]<<'\n';
else
{
maxi=a[h][x][y];
maxi=max(maxi,a[h][x][y+k-(1<<h)]);
maxi=max(maxi,a[h][x+k-(1<<h)][y]);
maxi=max(maxi,a[h][x+k-(1<<h)][y+k-(1<<h)]);
g<<maxi<<'\n';
}
}
f.close();
g.close();
return 0;
}