Cod sursa(job #478727)

Utilizator freak93Adrian Budau freak93 Data 20 august 2010 08:28:49
Problema Plantatie Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<fstream>

using namespace std;

const char iname[]="plantatie.in";
const char oname[]="plantatie.out";
const int maxn=505;
const int maxlog=10;

ifstream f(iname);
ofstream g(oname);

int a[maxlog][maxn][maxn],i,j,n,k,m,log[maxn],b[maxn][maxn];

int query(int i,int j,int k)
{
    int dis=log[k];
    return max( max( a[dis][i][j], a[dis][i+k-(1<<dis)][j+k-(1<<dis)]), max( a[dis][i][j+k-(1<<dis)], a[dis][i+k-(1<<dis)][j]));
}

int main()
{
    f>>n>>m;
    for(i=1;i<=n;++i)
        for(j=1;j<=n;++j)
            f>>a[0][i][j];
    for(i=2;i<=n;++i)
        log[i]=log[i>>1]+(i&1);
    for(k=1;(1<<k)<=n;++k)
        for(i=n-(1<<k)+1;i;--i)
            for(j=n-(1<<k)+1;j;--j)
                a[k][i][j]=max( max( a[k-1][i][j], a[k-1][i][j+(1<<k-1)]), max( a[k-1][i+(1<<k-1)][j], a[k-1][i+(1<<k-1)][j+(1<<k-1)]) );
    while(m--)
        f>>i>>j>>k,g<<query(i,j,k)<<"\n";
}