Cod sursa(job #998918)

Utilizator dobrebogdanDobre Bogdan Mihai dobrebogdan Data 18 septembrie 2013 19:12:47
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
int d[503][503][15],v[15];
int main(){
    freopen("plantatie.in","r",stdin);
    freopen("plantatie.out","w",stdout);
    int n,m,i,j,l,k,z,x,y;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    scanf("%d",&d[i][j][0]);
    l=log2(n);
    v[0]=1;
    for(i=1;i<=l;i++)
        v[i]=v[i-1]*2;
    for(k=1;k<=l;k++)
        for(i=1;i+v[k-1]<=n;i++)
            for(j=1;j+v[k-1]<=n;j++)
                d[i][j][k]=max(max(max(d[i][j][k-1],d[i+v[k-1]][j][k-1]),d[i][j+v[k-1]][k-1]),d[i+v[k-1]][j+v[k-1]][k-1]);
    for(i=1;i<=m;i++)
        {
        scanf("%d%d%d",&x,&y,&k);
        l=log2(k);
        z=max(max(max(d[x][y][l],d[x+k-v[l]][y][l]),d[x][y+k-v[l]][l]),d[x+k-v[l]][y+k-v[l]][l]);
    printf("%d\n",z);
        }
    return 0;
}