Cod sursa(job #2276909)

Utilizator verde.cristian2005Verde Flaviu-Cristian verde.cristian2005 Data 5 noiembrie 2018 16:25:46
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int v[501][501],rmq[9][501][501],log[501];
int main()
{
    int n,m,i,j,k,c,l;
    in>>n>>m;
    for(i=2; i<=n; i++)
        log[i]=1+log[i/2];
    for(i=1; i<=n; i++)
        for(j=1; j<=n; j++)
        {
            in>>v[i][j];
            rmq[0][i][j]=v[i][j];
        }
    for(k=1; k<=log[n]; k++)
        for(i=(1<<k); i<=n; i++)
            for(j=(1<<k); j<=n; j++)
                rmq[k][i][j]=max(max(rmq[k-1][i][j],rmq[k-1][i-(1<<(k-1))][j]),max(rmq[k-1][i][j-(1<<(k-1))],rmq[k-1][i-(1<<(k-1))][j-(1<<(k-1))]));
    for(c=1; c<=m; c++)
    {
        in>>i>>j>>k;
        l=log[k];
        out<<max(max(rmq[l][i+k-1][j+k-1],rmq[l][i+(1<<l)-1][j+k-1]),max(rmq[l][i+k-1][j+(1<<l)-1],rmq[l][i+(1<<l)-1][j+(1<<l)-1]))<<'\n';
    }
    return 0;
}