Pagini recente » Cod sursa (job #1089066) | Cod sursa (job #493220) | Cod sursa (job #10891) | Cod sursa (job #946438) | Cod sursa (job #2292330)
#include <fstream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int l[5001];
int n,m,i,j,k,x,v[20][501][501];
int main(){
fin>>n>>m;
for(i=2;i<=n;i++){
l[i]=1+l[i/2];
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
fin>>v[0][i][j];
for(k=1;k<=l[n];k++){
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
v[k][i][j]=v[k-1][i][j];///aceeasi pozitie dim 2^k-1
if(i+(1<<(k-1))<=n && v[k-1][i+(1<<(k-1))][j]>v[k][i][j]){
v[k][i][j]=v[k-1][i+(1<<(k-1))][j];
}
if(j+(1<<(k-1))<=n && v[k-1][i][j+(1<<(k-1))]>v[k][i][j]){
v[i][j][k]=v[i][j+(1<<(k-1))][k-1];
}
if(i+(1<<(k-1))<=n && j+(1<<(k-1))<=n && v[k-1][i+(1<<(k-1))][j+(1<<(k-1))]>v[k][i][j])
v[k][i][j]=v[k-1][i+(1<<(k-1))][j+(1<<(k-1))];
}
}
}
for(;m;m--){
fin>>i>>j>>k;
x=v[l[k]][i][j];
if(v[l[k]][i+k-(1<<l[k])][j]>x)
x=v[l[k]][i+k-(1<<l[k])][j];
if(v[l[k]][i][j+k-(1<<l[k])]>x)
x=v[l[k]][i][j+k-(1<<l[k])];
if(v[l[k]][i+k-(1<<l[k])][j+k-(1<<l[k])]<x)
fout<<x<<"\n";
else
fout<<v[l[k]][i+k-(1<<l[k])][j+k-(1<<l[k])]<<"\n";
}
///fout<<v[4][5][2];
return 0;
}