Pagini recente » Cod sursa (job #447321) | Cod sursa (job #1824398) | Cod sursa (job #2743468) | Cod sursa (job #179546) | Cod sursa (job #2903358)
#include <iostream>
#include <vector>
#include <fstream>
#define nr 501
using namespace std;
int main()
{
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int R[nr][nr][10], log[nr];
int n,m,i,j,x,y,t,k,sol,p;
f>>n>>m;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
f>>R[i][j][0];
}
}
for (i=2;i<=n;i++){
log[i]=log[i/2]+1;
}
for(k=1; (1<<k)<=n; k++) {
for (i = 1; i + (1 << k) - 1 <= n; i++) {
for (j = 1; j + (1 << k) - 1 <= n; j++) {
R[i][j][k] = max(R[i][j][k - 1], R[i + (1 << (k - 1))][j][k - 1]);
R[i][j][k] = max(R[i][j][k], R[i][j + (1 << (k - 1))][k - 1]);
R[i][j][k] = max(R[i][j][k], R[i + (1 << (k - 1))][j + (1 << (k - 1))][k - 1]);
}
}
}
for(i=1;i<=m;i++)
{
f>>x>>y>>k;
p=log[k];
t=(1<<p);
sol=max(R[x][y][p], R[x+k-t][y][p]);
sol=max(sol, R[x][y+k-t][p]);
sol=max(sol, R[x+k-t][y+k-t][p]);
g<<sol<<"\n";
}
return 0;
}