Pagini recente » Cod sursa (job #2438474) | Cod sursa (job #69578) | Cod sursa (job #690519) | Cod sursa (job #1919111) | Cod sursa (job #1198433)
using namespace std;
#include <fstream>
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
const int Nmax = 500;
const int logMax = 9;
int log[Nmax];
int RMQ[logMax][Nmax][Nmax];
void citire(int&, int&) ;
void preprocess(int) ;
inline int myMax(int, int, int, int) ;
int main()
{
int m, n, a, b, k, lg;
citire(n, m);
preprocess(n);
for(; m; --m)
{
fin >> a >> b >> k; --a; --b;
lg = log[k];
fout << myMax(RMQ[lg][a][b], RMQ[lg][a+k-(1<<lg)][b],
RMQ[lg][a][b+k-(1<<lg)], RMQ[lg][a+k-(1<<lg)][b+k-(1<<lg)]) << '\n';
}
return 0;
}
void citire(int &n, int &m)
{
int i, j;
fin>>n>>m;
for(i = 0; i < n; ++i)
for(j = 0; j < n; ++j)
fin >> RMQ[0][i][j];
}
void preprocess(int n)
{
int i, j, k;
log[1] = 0;
for(i = 2; i <= n; ++i) log[i] = 1 + log[i>>1];
for(k = 1; k <= log[n]; ++k)
for(i = 0; i+(1<<k) <= n; ++i)
for(j = 0; j+(1<<k) <= n; ++j)
RMQ[k][i][j] = myMax(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))]);
}
inline int myMax(int a, int b, int c, int d)
{
if(b > a) a = b;
if(c > a) a = c;
if(d > a) a = d;
return a;
}