Pagini recente » Cod sursa (job #2730391) | infoarena - comunitate informatica, concursuri de programare | Cod sursa (job #343106) | Cod sursa (job #2174610) | Cod sursa (job #2626258)
#include<bits/stdc++.h>
using namespace std;
#define nmax 505
#define dim 10
int n,m,a[nmax][nmax][dim],lg[nmax];
int main()
{
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
fin>>n>>m;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
fin>>a[i][j][0];
lg[1]=0;
for(int i=2;i<=n;++i)
lg[i]=1+lg[i>>1];
for(int k=1;k<=lg[n]+1;++k)
{
int l=1<<k;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
{
a[i][j][k]=a[i][j][k-1];
if(j+l/2<=n)
a[i][j][k]=max(a[i][j][k],a[i][j+l/2][k-1]);
if(i+l/2<=n)
a[i][j][k]=max(a[i][j][k],a[i+l/2][j][k-1]);
if(i+l/2<=n && j+l/2<=n)
a[i][j][k]=max(a[i][j][k],a[i+l/2][j+l/2][k-1]);
}
}
while(m--)
{
int i,j,c;
fin>>i>>j>>c;
int p=(1<<lg[c]);
fout<<max(a[i][j][lg[c]],max(a[i+c-p][j][lg[c]],max(a[i][j+c-p][lg[c]],a[i+c-p][j+c-p][lg[c]])))<<'\n';
}
fin.close();
fout.close();
return 0;
}
/*#include <iostream>
int a;
class cls {
public:
cls() {}
void _function(const int&& a) const noexcept {
int& b = const_cast<int&>(a);
//int& b=a;
b++;
}
};
int main() {
cls c;
c._function(std::move(a));
std::cout << a;
}*/