Cod sursa(job #827568)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 2 decembrie 2012 12:08:10
Problema Plantatie Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,i,j,k,p,a[510][510][10],sol,x,y,z;
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",&a[i][j][0]);
    for(k=1,p=1;2*p<=n;k++,p<<=1)
    {
        //printf("k = %d\n",k);
        for(i=1;i<=n-2*p+1;i++)
        {
            for(j=1;j<=n-2*p+1;j++)
            {
                a[i][j][k]=max(max(a[i][j][k-1],a[i+p][j][k-1]),max(a[i][j+p][k-1],a[i+p][j+p][k-1]));
                //printf("%d ",a[i][j][k]);
            }
            //printf("\n");
        }
        //printf("\n\n");
    }
    for(;m;--m)
    {
        scanf("%d %d %d\n",&x,&y,&z);
        for(i=0,p=1;2*p<=z;p<<=1,i++);
        sol=max(max(a[x][y][i],a[x+p/2][y][i]),max(a[x][y+p/2][i],a[x+p/2][y+p/2][i]));
        printf("%d\n",sol);
    }
    return 0;
}