Cod sursa(job #1951976)

Utilizator VicktorVictor Teodor Stoian Vicktor Data 3 aprilie 2017 21:23:32
Problema Plantatie Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <cstdio>

using namespace std;

ofstream cout("plantatie.out");

int M[505][505][10],i,j,n,m,nr,l,cx,cy,lat,k;

int main()
{
    FILE*fin=freopen("plantatie.in","r",stdin);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            scanf("%d",&M[0][i][j]);


    for(k=1;1<<k<n;++k)
        for(i=1; i<= n-(1<<k)+1;++i)
            for(j=1; j<= n-(1<<k)+1;j++){
                M[k][i][j]=max(M[k-1][i+(1<<(k-1))][j+(1<<(k-1))],max(M[k-1][i][j+((1<<k-1))],max(M[k-1][i][j],M[k-1][i+(1<<(k-1))][j])));
    }

    for(i=1;i<=m;i++){
        scanf("%d%d%d",&cx,&cy,&lat);
            for(l=1;1<<l<lat;++l);
            --l;
            nr=1<<l;
            cout<<max(M[l][cx][cy],max(M[l][cx+lat-nr][cy],max(M[l][cx+lat-nr][cy+lat-nr],M[l][cx][cy+lat-nr])))<<'\n';

    }
    return 0;
}