Cod sursa(job #1737540)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 4 august 2016 13:19:01
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<cstdio>
#include<algorithm>
#define MAXN 500
#define MAXLOG 12
using namespace std;
int rmq[MAXLOG][MAXN][MAXN],logarithm[MAXN];
int main(){
    freopen("plantatie.in","r",stdin);
    freopen("plantatie.out","w",stdout);
    int n,m,i,j,k,l,limit,x,y,z;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            scanf("%d",&rmq[0][i][j]);
    for(k=1;(1<<k)<=n;k++){
        l=(1<<(k-1));
        limit=2*l;
        for(i=1;i<=n-limit+1;i++)
            for(j=1;j<=n-limit+1;j++)
                rmq[k][i][j]=max(rmq[k-1][i][j],max(rmq[k-1][i+l][j],max(rmq[k-1][i][j+l],rmq[k-1][i+l][j+l])));
    }
    for(i=2;i<=n;i++)
        logarithm[i]=logarithm[i/2]+1;
    for(i=1;i<=m;i++){
        scanf("%d%d%d",&x,&y,&z);
        l=(1<<logarithm[z]);
        k=logarithm[z];
        printf("%d\n",max(rmq[k][x][y],max(rmq[k][x][y+z-l],max(rmq[k][x+z-l][y],rmq[k][x+z-l][y+z-l]))));
    }
    return 0;
}