Pagini recente » Cod sursa (job #536656) | Cod sursa (job #1774282) | Cod sursa (job #387760) | Cod sursa (job #1968784) | Cod sursa (job #2837254)
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n, m, i2, j2, I, J, K, k, len, lat, e[505], S[20][505][505];
int main(){
fin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
fin >> S[0][i][j];
e[1] = 0;
for (int i = 2; i <= n; i++)
e[i] = 1 + e[i/2];
for ( int p = 1, lat = 2; lat <= n; p++, lat *= 2 ){
for ( int i1 = 1; i1 <= n - lat + 1; i1++ ){
for ( int j1 = 1; j1 <= n - lat + 1; j1++ ){
i2 = i1 + (lat >> 1);
j2 = j1 + (lat >> 1);
S[p][i1][j1] = max ( max ( S[p-1][i1][j1], S[p-1][i2][j1] ), max( S[p-1][i1][j2], S[p-1][i2][j2] ) );
}
}
}
for (int i = 1; i <= m; i++){
fin >> I >> J >> K;
k = e[K];
len = (1<<k);
i2 = I + K - len;
j2 = J + K - len;
fout << max ( max ( S[k][I][J], S[k][I][j2] ), max( S[k][i2][J], S[k][i2][j2] )) << "\n";
}
return 0;
}