Pagini recente » Monitorul de evaluare | Cod sursa (job #2360849) | Cod sursa (job #2414519) | Cod sursa (job #363249) | Cod sursa (job #2812148)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
const int MAX=505;
const int LOG=10;
int n,m,v[LOG][MAX][MAX],log2[MAX];
int main()
{
fin >> n >> m;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
fin >> v[0][i][j];
log2[1]=0;
for(int i=2;i<=n;i++)
log2[i]=log2[i>>1]+1;
for(int k=1;(1<<k)<=n;k++)
{
int p=1<<(k-1);
int sf=n-(1<<k)+1;
for(int i=1;i<=sf;i++)
for(int j=1;j<=sf;j++)
v[k][i][j]=max(max(v[k-1][i][j],v[k-1][i][j+p]),max(v[k-1][i+p][j],v[k-1][i+p][j+p]));
}
for(;m;--m)
{
int i,j,k,l,p;
fin >> i >> j >> k;
l=log2[k];
p=1<<l;
fout << max(max(v[l][i][j],v[l][i][j+k-p]),max(v[l][i+k-p][j],v[l][i+k-p][j+k-p])) << '\n';
}
return 0;
}