Cod sursa(job #3135529)

Utilizator ana_valeriaAna Valeria Duguleanu ana_valeria Data 3 iunie 2023 16:20:28
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#define MAX 500
#define LOG 10
using namespace std;
ifstream cin ("plantatie.in");
ofstream cout ("plantatie.out");
int rmq[LOG + 10][MAX + 10][MAX + 10], exp2[MAX + 10];
int main()
{
    int n, q;
    cin >> n >> q;
    int val;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
            cin >> rmq[0][i][j];
    for (int p = 1; (1 << p) <= n; p++)
        for (int i = 1; i <= n - (1 << p) + 1; i++)
            for (int j = 1; j <= n - (1 << p) + 1; j++)
                rmq[p][i][j] = max(max(rmq[p - 1][i][j],rmq[p - 1][i + (1 << (p - 1))][j]), max(rmq[p - 1][i][j + (1 << (p - 1))], rmq[p - 1][i + (1 << (p - 1))][j + (1 << (p - 1))]));
    exp2[1] = 0;
    for (int i = 2; i <= n; i++)
        exp2[i] = exp2[i / 2] + 1;
    for (int i = 1; i <= q; i++)
    {
        int l, c, length;
        cin >> l >> c >> length;
        int p = exp2[length];
        cout << max(max(rmq[p][l][c], rmq[p][l + length - (1 << p)][c + length - (1 << p)]), max(rmq[p][l + length - (1 << p)][c], rmq[p][l][c + length - (1 << p)])) << '\n';
    }
    return 0;
}