Cod sursa(job #3358653)

Utilizator rhyhrrhy1Dinca Matei rhyhrrhy1 Data 19 iunie 2026 01:16:42
Problema Plantatie Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int ans[500][500][10];
int main() {
    int n, q;
    fin >> n >> q;

    vector<int> v(n);
    int cnt = -1;
    for (int k = 0; k < n; k++) {
        cnt++;
        for (int i = 0; i < n; i++) fin >> v[i];

        const int p = 31 - __builtin_clz(n);

        vector<vector<int>> rmq(p + 1, vector<int>(n));

        for (int i = 0; i < n; i++) {

            rmq[0][i] = v[i];
            ans[cnt][i][0] = v[i];
        }

        for (int i = 1; i <= p; i++) {

            for (int j = 0; j + (1 << i) <= n; j++) {

                rmq[i][j] = max(rmq[i - 1][j], rmq[i-1][j+(1<<(i-1))]);
                ans[cnt][j][i] = rmq[i][j];
            }
        }
    }
    while (q--) {
        int a, b, l;

        fin >> a >> b;
        fin >> l;
        a--; b--;
        const int y = 31 - __builtin_clz(l);
        int rez = 0;
        for (int i = 0 + a; i < l + a; i++) {
            rez = max(rez, max(ans[i][b][y], ans[i][b + l- (1 << y)][y]));
        }
        fout << rez << '\n';

    }

    return 0;
}