Cod sursa(job #2048879)

Utilizator patcasrarespatcas rares danut patcasrares Data 26 octombrie 2017 17:35:36
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<fstream>
#define DN 100005
#include<iostream>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n,m,a[505][505],r[15][505][505],d[505],l,c,k;
int main()
{
   fin>>n>>m;
   for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        {
            fin>>a[i][j];
            r[0][i][j]=a[i][j];
        }
    for(int h=1;h<=10;h++)
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                if(i+(1<<h)-1<=n&&j+(1<<h)-1<=n)
                    r[h][i][j]=max(max(r[h-1][i][j],r[h-1][i+(1<<(h-1))][j]),max(r[h-1][i+(1<<(h-1))][j+(1<<(h-1))],r[h-1][i][j+(1<<(h-1))]));
    for(int h=1;h<=10;h++)
        for(int i=1;i<=n;i++)
            if((1<<h)<=i)
                d[i]=h;
    for(int h=1;h<=m;h++)
    {
        int i,j;
        fin>>i>>j>>k;
        fout<<max(max(r[d[k]][i][j],r[d[k]][i+k-(1<<d[k])][j]),max(r[d[k]][i][j+k-(1<<d[k])],r[d[k]][i+k-(1<<d[k])][j+k-(1<<d[k])]))<<'\n';
    }
}