Pagini recente » Cod sursa (job #2125654) | Cod sursa (job #3242838)
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int lg[501],rmq[18][501][501];
int mx(int a, int b, int c, int d){
if(a>b&&a>c&&a>d){
return a;
}
else if(b>c&&b>d){
return b;
}
else if(c>d){
return c;
}
else{
return d;
}
}
int main()
{
int i,n,q,j,l,k;
f >> n >> q;
lg[1]=0;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
f >> rmq[0][i][j];
}
if(i>=2){
lg[i]=lg[i/2]+1;
}
}
for(k=1;(1<<k)<=n;k++){
for(i=1;i<=n-(1<<k)+1;i++){
for(j=1;j<=n-(1<<k)+1;j++){
rmq[k][i][j]=mx(rmq[k-1][i][j],rmq[k-1][i][j+(1<<(k-1))],rmq[k-1][i+(1<<(k-1))][j],rmq[k-1][i+(1<<(k-1))][j+(1<<(k-1))]);
}
}
}
for(k=1;k<=q;k++){
f >> i >> j >> l;
g << mx(rmq[lg[l]][i][j],rmq[lg[l]][i+l-(1<<lg[l])][j],rmq[lg[l]][i][j+l-(1<<lg[l])],rmq[lg[l]][i+l-(1<<lg[l])][j+l-(1<<lg[l])]) << '\n';
//g << rmq[lg[l]][i][j] << " " << rmq[lg[l]][i+l-(1<<lg[l])][j] << " " << rmq[lg[l]][i][j+l-(1<<lg[l])] << " " << rmq[lg[l]][i+l-(1<<lg[l])][j+l-(1<<lg[l])] << '\n';
}
return 0;
}