Pagini recente » Cod sursa (job #605531) | Cod sursa (job #946760) | Cod sursa (job #315162) | Cod sursa (job #315339) | Cod sursa (job #2890454)
//Plantatie
#include <iostream>
#include <fstream>
using namespace std;
int n,m,x,y,l,k,len;
int a[100][505][505],lg[505];
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[0][i][j];
lg[1]=0;
for(int i = 2; i<= n; ++i)
lg[i] = lg[i/2] + 1;
for(int p = 1 ,lat = 2;lat <= n; p++, lat*=2)
for(int i = 1;i <= n - lat + 1; ++i)
for(int j = 1; j <= n - lat + 1; ++j){
int indexl2 = i + (lat >> 1);
int indexc2 = j + (lat >> 1);
a[p][i][j] = max(max(a[p - 1][i][j], a[p - 1][indexl2][j]),max(a[p - 1][indexl2][j], a[p - 1][indexl2][indexc2]));
}
for(int i = 1;i <= m; ++i) {
fin >> x >> y >> l;
k = lg[l];
len = (1<<k);
int x2 = x + l -len;
int y2 = y + l -len;
fout << max(max(a[k][x][y], a[k][x2][y]),max(a[k][x2][y], a[k][x2][y2])) << "\n";
}
return 0;
}