Pagini recente » Borderou de evaluare (job #1078045) | Cod sursa (job #1224127) | Cod sursa (job #1901496) | Cod sursa (job #3265534) | Cod sursa (job #2603715)
#include<fstream>
#include<cmath>
#include<iostream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n,i,j,p[501][501],m,a,b,l;
int mat[501][501][10];
int maxi(int a,int b,int c,int d)
{
return max(max(a,b),max(c,d));
}
int main()
{
fin>>n>>m;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
fin>>p[i][j];
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
mat[i][j][0]=p[i][j];
for(int ii=1; ii<=9; ii++)
{
int p=(1<<ii);
for(i=1; i<=n-p+1; i++)
{
for(j=1; j<=n-p+1; j++)
{
mat[i][j][ii]=maxi(mat[i][j][ii-1],mat[i+p/2][j][ii-1],mat[i][j+p/2][ii-1],mat[i+p/2][j+p/2][ii-1]);
}
}
}
for(i=1; i<=m; i++)
{
fin>>a>>b>>l;
int p=log2(l);
fout<<maxi(mat[a][b][p],mat[a+l-(1<<(p))][b][p],mat[a][b+l-(1<<(p))][p],mat[a+l-(1<<(p))][b+l-(1<<(p))][p])<<"\n";
}
}