Pagini recente » Cod sursa (job #2377524) | Cod sursa (job #2797632) | Cod sursa (job #280717) | Cod sursa (job #333595) | Cod sursa (job #1715221)
#include <fstream>
#define MAX(a,b) (((a) >(b)) ? (a):(b))
using namespace std;
int lg[505], rmq[10][505][505], n, i, j, q, v1,v2,v3,v4,z, x,y,log, l, test, a1, a2, a3, a4,nr,k,dif, c;
int main()
{
ifstream f("plantatie.in");
ofstream g("plantatie.out");
f>>n>>q; //CITIRE
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>rmq[0][i][j];
for(i=2;i<=500;i++)
lg[i]=lg[i/2]+1;
for(x=1;x<=lg[n];x++)
for(y=1;y<=n;y++)
for(z=1;z<=n;z++)
{
nr=(1<<(x-1));
a1=rmq[x-1][y][z];
a2=rmq[x-1][y+nr][z];
a3=rmq[x-1][y][z+nr];
a4=rmq[x-1][y+nr][z+nr];
v1=MAX(a1,a2);
v2=MAX(a3,a4);
v3=MAX(v1,v2);
rmq[x][y][z]=v3;
}
/*for(x=1;x<=lg[n];x++)
{
for(y=1;y<=n;y++)
{
g<<"\n";
for(z=1;z<=n;z++)
g<<rmq[x][y][z]<<" ";
}
g<<"\n\n\n";
}
*/
for(i=1;i<=q;i++)
{
f>>x>>y>>k;
log=lg[k];
dif=k-(1<<log);
a1=rmq[log][x][y];
a2=rmq[log][x+dif][y];
a3=rmq[log][x][y+dif];
a4=rmq[log][x+dif][y+dif];
v1=MAX(a1,a2);
v2=MAX(a3,a4);
v3=MAX(v1,v2);
g<<v3<<"\n";
}
}