Cod sursa(job #825857)

Utilizator Al3ks1002Alex Cociorva Al3ks1002 Data 29 noiembrie 2012 19:12:07
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,S[505][505][9],p,P,i,j,k,x,y,z,a,b;
int main()
{
    freopen("plantatie.in","r",stdin);
    freopen("plantatie.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++) scanf("%d",&S[i][j][0]);
    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++)
            {
                p=1<<(k-1);
                a=max(S[i][j][k-1],S[i+p][j][k-1]);
                b=max(S[i][j+p][k-1],S[i+p][j+p][k-1]);
                S[i][j][k]=max(a,b);
            }
    for(;m;m--)
    {
        scanf("%d%d%d",&x,&y,&z);
        for(k=0,p=1;(p<<1)<=z;p<<=1,k++);
        P=z-(1<<k);
        a=max(S[x][y][k],S[x+P][y][k]);
        b=max(S[x][y+P][k],S[x+P][y+P][k]);
        printf("%d\n",max(a,b));
    }
    return 0;
}