Cod sursa(job #2901931)

Utilizator a.dulumanDuluman Andrada-Georgiana a.duluman Data 14 mai 2022 20:58:55
Problema Plantatie Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <iostream>
#include <fstream>
#define N 505

using namespace std;

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

int rmq[N][N][9];
int log_bin[N];

int maxim4(int a, int b, int c, int d)
{
    return max(max(a, b), max(c, d));
}

int main()
{
    int n, m, x, i, j, k, l, log;
    fin >> n >> m;
    
    log_bin[1] = 0;
    for(i = 2; i <= n; i++)
        log_bin[i] = 1 + log_bin[i / 2];

    for(i = 1; i <= n; i++)
        for(j = 1; j <= n; j++)
            {
                fin >> x;
                rmq[i][j][0] = x;
            }
    
    for(log = 1; log <= 9; log++)
        for(i = 1; i <= n; i++)
            for(j = 1; j <= n; j++)
                rmq[i][j][log] = maxim4(rmq[i][j][log - 1], rmq[i + (1 << (log - 1))][j][log - 1], rmq[i][j + (1 << (log - 1))][log - 1], rmq[i + (1 << (log - 1))][j + (1 << (log - 1))][log - 1]) ;

    for(k = 1; k <=m; k++)
    {
        fin >> i >> j >> l; 
        fout << maxim4(rmq[i][j][log_bin[l]], rmq[i][j + l - (1 << log_bin[l])][log_bin[l]], rmq[i + l - (1 << log_bin[l])][j + l - (1 << log_bin[l])][log_bin[l]], rmq[i + l - (1 << log_bin[l])][j][log_bin[l]]) << "\n";
    }
    return 0;
}