Pagini recente » Cod sursa (job #2895404) | Cod sursa (job #3162016) | Cod sursa (job #1051561) | Cod sursa (job #1825557) | Cod sursa (job #2503068)
#include <fstream>
using namespace std;
long long n,m,i,j,k,p,put,pu[505],rmq[505][505][12];
int main()
{
ifstream f("plantatie.in");
ofstream g("plantatie.out");
f>>n>>m;
for(i=2; i<=n; i*=2) pu[i]++;
for(i=1; i<=n; i++) pu[i]+=pu[i-1];
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
f>>rmq[i][j][0];
for(p=2; p<=n; p*=2)
for(i=1; i<=n-p+1; i++)
for(j=1; j<=n-p+1; j++)
{
long long a,b;
a=max(rmq[i][j][pu[p]-1],rmq[i][j+p/2][pu[p]-1]);
b=max(rmq[i+p/2][j][pu[p]-1],rmq[i+p/2][j+p/2][pu[p]-1]);
rmq[i][j][pu[p]]=max(a,b);
}
/*for(p=1; p<=n; p*=2)
{
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
g<<rmq[i][j][pu[p]]<<" ";
g<<'\n';
}
g<<'\n';
}*/
while(m)
{
m--;
f>>i>>j>>k;
p=pu[k];
put=p;
p=1<<put;
long long a,b;
a=max(rmq[i][j][put],rmq[i+k-p][j][put]);
b=max(rmq[i][j+k-p][put],rmq[i+k-p][j+k-p][put]);
g<<max(a,b)<<'\n';
}
return 0;
}