Cod sursa(job #2615393)

Utilizator DeliaGhergheGherghe Ioana-Delia DeliaGherghe Data 14 mai 2020 15:41:54
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <fstream>
#include <tgmath.h>
using namespace std;

int rmq[11][500][500], m[500][500], N, M;

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

    int i,j,k,l,p;


    fin >> N >> M;
    for (i = 1; i <= N; i++)
        for (j = 1; j <= N; j++)
    {
        fin >> m[i][j];
        rmq[0][i][j] = m[i][j];
    }

    for (k = 1; (1 << k) <= N ; k++)
        for(i = 1; i <= N; i++)
            for (j = 1; j <= N; j++)
                rmq[k][i][j] = max(rmq[k-1][i][j],max(rmq[k-1][i][j + (1 << (k-1))], max(rmq[k-1][i + (1 << (k-1))][j], rmq[k-1][i + (1 << (k-1))][j + (1 << (k-1))])));

    /*for (k = 1; (1 << k) <= N ; k++)
        {for(i = 1; i <= N; i++)
            {for (j = 1; j <= N; j++)
            cout << rmq[k][i][j] << " ";
            cout<<endl;}
            cout << endl;}*/

    for (l = 0; l < M; l++)
    {
        fin >> i >> j >> k;
        p = (int)log2(k);
        fout << max(rmq[p][i][j], max(rmq[p][i][j + k - (1 << p)], max(rmq[p][i + k - (1 << p)][j], rmq[p][i + k - (1 << p)][j + k - (1 << p)]))) << '\n';
    }

    return 0;
}