Pagini recente » Cod sursa (job #586465) | Cod sursa (job #191149) | Cod sursa (job #1755582) | Cod sursa (job #380003) | Cod sursa (job #2717512)
#pragma GCC optimize ("Ofast")
#include <bits/stdc++.h>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
const int Max = 501;
void nos()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
}
int n,q;
int rmq[Max][40][Max];
void read()
{
f>>n>>q;
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
f>>rmq[i][0][j];
}
void create_rmq(int rmq[40][Max])
{
int i,j;
for(i = 1; (1<<i) <= n; i++)
{
// pentru toate lungimile
for(j=0; j + (1<<i) - 1 < n; j++)
rmq[i][j] = max(rmq[i-1][j], rmq[i-1][j + (1 << (i-1))]);
}
}
int ans;
void ask_rmq(int rmq[40][Max], int left, int dim)
{
int half_log = log2(dim);
int this_ans = max(rmq[half_log][left], rmq[half_log][left + dim - (1<<half_log)]);
ans = max(ans,this_ans);
}
void solve()
{
int i;
for(i=0;i<n;i++)
create_rmq(rmq[i]);
while(q--)
{
int xs,ys,dim;
f>>xs>>ys>>dim;
--xs,--ys,ans = 0;
for(int j = xs;j<=xs + dim - 1; j++)
ask_rmq(rmq[j],ys,dim);
g<<ans<<'\n';
}
}
void restart()
{
}
int32_t main()
{
nos();
read();
solve();
restart();
return 0;
}