Pagini recente » Cod sursa (job #2255967) | Cod sursa (job #646578) | Cod sursa (job #1423932) | Cod sursa (job #1468596) | Cod sursa (job #1964919)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f1("plantatie.in");
ofstream f2("plantatie.out");
const int N = 505;
const int LOG = 10;
int n,q,i,j,k,x1,y1,l;
int rmq[LOG][N][N],log[N];
int max4(int a,int b,int c,int d)
{
return max(max(a,b),max(c,d));
}
void citeste()
{
f1>>n>>q;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f1>>rmq[0][i][j];
}
void prep()
{
for(i=2;i<=n;i++)
log[i] = log[i/2] + 1;
for(k=1;(1<<k) <= n; k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
rmq[k][i][j] = max4(rmq[k-1][i] [j],
rmq[k-1][i + (1<<(k-1))][j],
rmq[k-1][i] [j + (1<<(k-1))],
rmq[k-1][i + (1<<(k-1))][j + (1<<(k-1))]);
}
int query()
{
int lg = log[l];
int dif = l - (1<<lg);
return max4(rmq[lg][x1] [y1],
rmq[lg][x1+dif][y1],
rmq[lg][x1] [y1+dif],
rmq[lg][x1+dif][y1+dif]);
}
int main()
{
citeste();
prep();
while(q--)
{
f1>>x1>>y1>>l;
f2<<query()<<'\n';
}
return 0;
}