Cod sursa(job #2073613)

Utilizator dragos231456Neghina Dragos dragos231456 Data 23 noiembrie 2017 13:45:21
Problema Plantatie Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int n,a[505][505][10],m,I,J,k,r,h,rez;

void RMQ()
{
    for(int k=1;(1<<k)<=n;++k)
    {
        r=(1<<(k-1)); h=(1<<k);
        for(int i=1;i<=n-h+1;++i)
        {
            for(int j=1;j<=n-h+1;++j)
            {
                a[i][j][k]=max(a[i][j][k-1],a[i+r][j+r][k-1]);
                a[i][j][k]=max(a[i][j][k],a[i+r][j][k]);
                a[i][j][k]=max(a[i][j][k],a[i][j+r][k]);
            }
        }
    }
}

int main()
{
    f>>n>>m;
    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=n;++j)
        {
            f>>a[i][j][0];
        }
    }
    RMQ();
    for(int i=1;i<=m;++i)
    {
        f>>I>>J>>k;
        r=log2(k);
        h=(1<<r);
        rez=max(a[I][J][r],a[I+k-h][J+k-h][r]);
        rez=max(rez,a[I][J+k-h][r]);
        rez=max(rez,a[I+k-h][J][r]);
        g<<rez<<'\n';
    }
    return 0;
}