Pagini recente » Cod sursa (job #423768) | Cod sursa (job #425347) | Cod sursa (job #425299) | Diferente pentru problema/inversmodular intre reviziile 25 si 24 | Cod sursa (job #3358657)
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int a[505][505];
int rmq[505][505][10];
int main(){
int n,q;
fin>>n>>q;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
fin>>a[i][j];
int p=31-__builtin_clz(n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
rmq[i][j][0]=a[i][j];
for(int k=1;k<=p;k++){
for(int i=0;i<n;i++){
for(int j=0;j+(1<<k)<=n;j++){
rmq[i][j][k]=max(rmq[i][j][k-1],
rmq[i][j+(1<<(k-1))][k-1]);
}
}
}
while(q--){
int x,y,l;
fin>>x>>y>>l;
x--;y--;
int k=31-__builtin_clz(l);
int best=0;
for(int i=x;i<x+l;i++){
best=max(best,
max(rmq[i][y][k],
rmq[i][y+l-(1<<k)][k]));
}
fout<<best<<"\n";
}
}