Cod sursa(job #3175309)

Utilizator alex_0747Gheorghica Alexandru alex_0747 Data 25 noiembrie 2023 16:56:29
Problema Plantatie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream fin("plantatie.in");
ofstream fout("plantatie.out");

int rmq[13][505][505], e[505], n;

int main()
{
    int i, j, k, q, L, M, exp;
    fin >> n >> q;
    for (i = 1; i <= n; i++)
        for (j = 1; j <= n; j++)
            fin >> rmq[0][i][j];
    for (i = 2; i <= n; i++)
        e[i] = 1 + e[i / 2];
    for (k = 1; k <= n; k++)
        for (i = 1; i <= e[n]; i++)
        {
            L = (1 << i);
            for (j = 1; j <= n - L + 1; j++)
                rmq[i][k][j] = max(rmq[i - 1][k][j], rmq[i - 1][k][j + L / 2]);
        }
    while (q--)
    {
        fin >> i >> j >> k;
        M = 0; exp = e[j - i + 1];
        for (L = 0; L < k; L++)
            M = max({ M, rmq[exp][i + L][j], rmq[exp][i + L][j + k - (1 << exp)] });
        fout << M << "\n";
    }
    return 0;
}