Pagini recente » Cod sursa (job #184357) | Cod sursa (job #3215282) | Cod sursa (job #1863870) | Cod sursa (job #718786) | Cod sursa (job #1218424)
#include <fstream>
#include <iostream>
using namespace std;
int N,M, dp[510][510][10], lg[510];
int main(){
ifstream in("plantatie.in");
ofstream out("plantatie.out");
in >> N >> M;
int i,j,k,x,y,l;
for (i=1; i<=N; i++)
for (j=1; j<=N; j++)
in >> dp[i][j][0];
for (i=2; i<=N; i++)
lg[i]=lg[i/2]+1;
for (k=1; (1<<k)<=N; k++){
l=1<<(k-1);
for (i=1; i+l-1<=N; i++)
for (j=1; j+l-1<=N; j++)
dp[i][j][k]=max(max(dp[i][j][k-1],dp[i][j+l][k-1]),max(dp[i+l][j][k-1],dp[i+l][j+l][k-1]));
}
for (i=1; i<=M; i++){
in >> x >> y >> k;
l=lg[k];
out << max(max(dp[x][y][l],dp[x][k+y-(1<<l)][l]),max(dp[k+x-(1<<l)][y][l],dp[k+x-(1<<l)][k+y-(1<<l)][l])) << "\n";
}
return 0;
}