Cod sursa(job #2904736)

Utilizator NefelibataAnton Marius Alexandru Nefelibata Data 18 mai 2022 01:00:51
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>

using namespace std;

ifstream f("plantatie.in");
ofstream o("plantatie.out");
int n, m, a, b, c, rmq[10][501][501], v[501];

int main()
{
    f>>n>>m;
    for (int i = 1; i <= n; ++i) {
        f>>rmq[0][1][i];
    }
    for(int i=2;i<=n;i++) {
        v[i] = v[i>>1]+1;
        for(int j=1;j<=n;j++) {
            f>>rmq[0][i][j];
        }
    }
    for(int i=1;i<=8;i++) {
        for(int j=1;j+(1<<(i-1))-1<=n;j++) {
            for(int k=1;k+(1<<(i-1))-1<=n;k++) {
                rmq[i][j][k]=max(max(rmq[i-1][j][k], rmq[i-1][j][k+(1<<(i-1))]), max(rmq[i-1][j+(1<<(i-1))][k], rmq[i-1][j+(1<<(i-1))][k+(1<<(i-1))]));
            }
        }
    }
    for(int q = 1; q <= m; q++){
        f>>a>>b>>c;
        int x = v[c];
        o<<max(max(rmq[x][a][b],rmq[x][a][b+c-(1<<x)]),max(rmq[x][a+c-(1<<x)][b],rmq[x][a+c-(1<<x)][b+c-(1<<x)]))<<"\n";
    }
    return 0;
}