Pagini recente » Cod sursa (job #1831074) | Cod sursa (job #349573) | Cod sursa (job #348795) | Cod sursa (job #645054) | Cod sursa (job #2901610)
#include <bits/stdc++.h>
using namespace std;
int n,m,rmq[501][501][9],x,y,l,lg[501];
int main(){
ifstream f("plantatie.in");
ofstream g("plantatie.out");
f>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) {
f >> x;
rmq[i][j][0] = x;
}
for(int k=1;k<=9;k++)
for(int i=1;i+(1<<k)-1<=n;i++)
for(int j=1;j+(1<<k)-1<=n;j++)
rmq[i][j][k]=max({rmq[i][j][k - 1], rmq[i + (1 << (k - 1))][j][k - 1], rmq[i][j + (1 << (k - 1))][k - 1], rmq[i + (1 << (k - 1))][j + (1 << (k - 1))][k - 1]}) ;
for(int i=2;i<=n;i++)
lg[i]= lg[i / 2] + 1;
for(int i=0;i<m;i++){
f>>x>>y>>l;
g << max({rmq[x][y][lg[l]], rmq[x][y + l - (1 << lg[l])][lg[l]], rmq[x + l - (1 << lg[l])][y + l - (1 << lg[l])][lg[l]], rmq[x + l - (1 << lg[l])][y][lg[l]]}) << '\n';
}
return 0;
}