Cod sursa(job #2090009)

Utilizator Andrei_CotorAndrei Cotor Andrei_Cotor Data 17 decembrie 2017 14:41:20
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<fstream>
using namespace std;
ifstream fi("plantatie.in");
ofstream fo("plantatie.out");
int n,m,Lg[501],i,j,k,A[501][501][10],t,p,rez;
int main()
{
    fi>>n>>m;
    Lg[1]=0;
    for(i=2; i<=n; i++)
        Lg[i]=Lg[i/2]+1;
    //A[i][j][k]=maximul din submatricea (i,j) de lat (1<<k)
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=n; j++)
        {
            fi>>A[i][j][0];
        }
    }
    for(k=1; k<=9; k++)
        for(i=1; i<=n-(1<<k)+1; i++)
            for(j=1; j<=n-(1<<k)+1; j++)
                A[i][j][k]=max(A[i][j][k-1],max(A[i][j+(1<<(k-1))][k-1],max(A[i+(1<<(k-1))][j][k-1],A[i+(1<<(k-1))][j+(1<<(k-1))][k-1])));
    for(t=1; t<=m; t++)
    {
        fi>>i>>j>>k;
        p=Lg[k];
        rez=max(A[i][j][p],max(A[i][j+k-(1<<p)][p],max(A[i+k-(1<<p)][j][p],A[i+k-(1<<p)][j+k-(1<<p)][p])));
        fo<<rez<<"\n";
    }
    fi.close();
    fo.close();
    return 0;
}