Pagini recente » Cod sursa (job #3266768) | Cod sursa (job #1936702) | Cod sursa (job #2003899) | Cod sursa (job #1612056) | Cod sursa (job #2752024)
#include <iostream>
#include <bits/stdc++.h>
#include <fstream>
#include <cmath>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int main()
{
long n,m,x,y, maxim;
in >> n >> m;
int ans[502][502][11];
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
in >> ans[i][j][0];
}
}
for(int z=1;(1<<z)<=n;z++)
for(int i=1;i+(1<<z)-1<=n;i++)
for(int j=1;j+(1<<z)-1<=n;j++){
ans[i][j][z]=max(ans[i][j][z-1], ans[i][j+(1<<(z-1))][z-1]);
ans[i][j][z]=max(ans[i+(1<<(z-1))][j][z-1],ans[i][j][z]);
ans[i][j][z]=max(ans[i+(1<<(z-1))][j+(1<<(z-1))][z-1],ans[i][j][z]);
}
int k;
for(int i=1;i<=m;i++){
in >> x >> y >> k;
int p = log2(k);
maxim=max(ans[x][y][p], ans[x][y+k-(1<<p)][p]);
maxim=max(maxim, ans[x+k-(1<<p)][y][p]);
maxim=max(maxim, ans[x+k-(1<<p)][y+k-(1<<p)][p]);
out << maxim << "\n";
}
return 0;
}