Pagini recente » Borderou de evaluare (job #3303910) | Cod sursa (job #2528655) | Monitorul de evaluare | Atasamentele paginii Profil matei.brestoiu | Cod sursa (job #3352855)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int rmq[9][501][501];
int lg[501];
int main() {
int n, m;
fin >> n >> m;
for (int i=1;i<=n;i++) {
for (int j=1;j<=n;j++) {
fin>>rmq[0][i][j];
//cout<<rmq[0][i][j]<<" ";
}
//cout<<"\n";
}
//cout<<"\n\n";
lg[1]=0;
for (int i=2;i<=n;i++) {
lg[i]=lg[i]/2+1;
}
for (int i=1;(1<<i)<=n;i++) {
for (int j=1;j<=n;j++) {
for (int k=1;k<=n;k++) {
int aux=1<<(i-1);
rmq[i][j][k]=max(max(max(rmq[i-1][j][k],rmq[i-1][j][k+aux]),rmq[i-1][j+aux][k]),rmq[i-1][j+aux][k+aux]);
//cout<<rmq[i][j][k]<<" ";
}
// cout<<"\n";
}
//cout<<"\n\n";
}
for (int i=1;i<=m;i++) {
int lin,col,d;
fin>>lin>>col>>d;
int l=lg[d];
int diff=d-(1<<l);
fout<<max(max(max(rmq[l][lin][col],rmq[l][lin+diff][col]),rmq[l][lin][col+diff]),rmq[l][lin+diff][col+diff])<<"\n";
}
return 0;
}