Cod sursa(job #1189844)

Utilizator gerd13David Gergely gerd13 Data 23 mai 2014 17:59:52
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
using namespace std;

ifstream is ("plantatie.in");
ofstream os ("plantatie.out");

int n, Q;
int RMQ[10][501][501], x, y, L;

int main()
{
    is >> n >> Q;
    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= n; ++j)
            is >> RMQ[0][i][j];

    for (int k = 1; 1<<k <= n; ++k)
        for (int i = 1; i+(1<<(k-1))-1 <= n; ++i)
            for (int j = 1; j+(1<<(k-1))-1 <= n; ++j)
                RMQ[k][i][j] = max(max(RMQ[k-1][i][j], RMQ[k-1][i+(1<<(k-1))][j+(1<<(k-1))]),max(RMQ[k-1][i+(1<<(k-1))][j], RMQ[k-1][i][j+(1<<(k-1))]));

    for (int q = 0, k = 0, Z; q < Q; ++q, k = 0)
    {
        is >> x >> y >> L;
        for (Z = 1; Z <= L; Z <<= 1, ++k); Z >>= 1;
        --k;
        os << max(max(RMQ[k][x][y], RMQ[k][x][y+L-Z]), max(RMQ[k][x+L-Z][y], RMQ[k][x+L-Z][y+L-Z])) << '\n';
    }

    is.close();
    os.close();
}