Pagini recente » Cod sursa (job #1032495) | Profil kino | Cod sursa (job #1820144) | Cod sursa (job #2057444) | Cod sursa (job #3124940)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("plantatie.in");
ofstream fout ("plantatie.out");
int rmq[10][501][501],n,m,l,lg[501],a[501][501];
int main()
{
fin >> n >> m;
for (int i=1; i<=n; i++)
{
for (int j=1; j<=n; j++)
{
fin >> a[i][j];
}
}
lg[1]=0;
for (int i=2; i<=n; i++)
{
lg[i]=lg[i/2]+1;
}
for (int i=1; i<=n; i++)
{
for (int j=1; j<=n; j++)
{
rmq[0][i][j]=a[i][j];
}
}
for (int k=1; (1 << k) <=n; k++)
{
for (int i=1; (i + (1 << k))-1 <=n; i++)
{
for (int j=1; (j + (1 << k))-1 <= n ; j++)
{
l=1 << (k-1);
int max1=max(rmq[k-1][i][j],rmq[k-1][i][j+l]);
int max2=max(max1,rmq[k-1][i+l][j]);
rmq[k][i][j]=max(max2,rmq[k-1][i+l][j+l]);
}
}
}
int x,y,z;
for (int i=1; i<=m; i++)
{
fin >> x >> y >> z;
int p=lg[z];
int max1=max(rmq[p][x][y],rmq[p][x][y+z-(1 << p)]);
int max2=max(max1,rmq[p][x+z-(1 << p)][y]);
fout << max(max2,rmq[p][x+z-(1 << p)][y+z-(1 << p)]) << endl;
}
return 0;
}