Pagini recente » Cod sursa (job #114423) | Cod sursa (job #1466883) | Cod sursa (job #3174624) | Cod sursa (job #2248848) | Cod sursa (job #1294296)
#include<fstream>
using namespace std;
int n, i, j, k, ii, maxim, m;
int a[501][501][10], p[501];
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int main(){
fin>> n >> m;
for(i = 1; i <= n; i++){
for(j = 1; j <= n; j++){
fin>> a[i][j][0];
}
}
for(i = 2; i <= n; i++){
p[i] = p[i/2] + 1;
}
for(k= 1; (1 << k) <= n; k++){
for(i = 1; i <= n; i++){
for(j = 1; j <= n; j++){
a[i][j][k] = a[i][j][k-1];
if(i + (1<<(k-1)) <= n && a[i][j][k] < a[i + (1<<(k-1))][j][k-1]){
a[i][j][k] = a[i + (1<<(k-1))][j][k-1];
}
if(j + (1<<(k-1)) <= n && a[i][j][k] < a[i][j + (1<<(k-1))][k-1]){
a[i][j][k] = a[i][j + (1<<(k-1))][k-1];
}
if(i + (1<<(k-1)) <= n && j + (1<<(k-1)) <= n && a[i][j][k] < a[i + (1<<(k-1))][j + (1<<(k-1))][k-1]){
a[i][j][k] = a[i + (1<<(k-1))][j + (1<<(k-1))][k-1];
}
}
}
}
for(ii = 1; ii <= m; ii++){
fin>> i >> j >> k;
maxim = a[i][j][p[k]];
if(maxim < a[i+k-1-(1<<p[k])+1][j][p[k]]){
maxim = a[i+k-1-(1<<p[k])+1][j][p[k]];
}
if(maxim < a[i+k-1-(1<<p[k])+1][j+k-1-(1<<p[k])+1][p[k]]){
maxim = a[i+k-1-(1<<p[k])+1][j+k-1-(1<<p[k])+1][p[k]];
}
if(maxim < a[i][j+k-1-(1<<p[k])+1][p[k]]){
maxim = a[i][j+k-1-(1<<p[k])+1][p[k]];
}
fout<< maxim <<"\n";
}
return 0;
}