Pagini recente » Cod sursa (job #2833867) | Cod sursa (job #2704546) | Cod sursa (job #2884444) | Cod sursa (job #1772718) | Cod sursa (job #177842)
Cod sursa(job #177842)
#include<fstream>
#define Nmax 501
int maxi(int a,int b,int c,int d)
{
int x,y;
if(a>b)
x=a;
else x=b;
if(c>d)
y=c;
else y=d;
if(x>y)
return x;
else return y;
}
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int rmq[18][Nmax][Nmax],lg[Nmax],x,y,i,j,k,a,b,k1;
int main()
{
f>>x;
f>>y;
for(i=1;i<=x;i++)
for(j=1;j<=x;j++)
f>>rmq[0][i][j];
for(i=2;i<=x;i++)
lg[i]=lg[i/2]+1;
for(k=1;k<=lg[x];k++)
for(i=1;i+(1<<k)-1<=x;i++)
for(j=1;j+(1<<k)-1<=x;j++)
rmq[k][i][j]=maxi(rmq[k-1][i][j],rmq[k-1][i][j+(1<<(k-1))],rmq[k-1][i+(1<<(k-1))][j],rmq[k-1][i+(1<<(k-1))][j+(1<<(k-1))]);
for(i=1;i<=y;i++)
{
f>>a>>b>>k;
k1=lg[k];
g<<maxi(rmq[k1][a][b],rmq[k1][a+k-(1<<k1)][b],rmq[k1][a][b+k-(1<<k1)],rmq[k1][a+k-(1<<k1)][b+k-(1<<k1)])<<"\n";
}
return 0;
}