Cod sursa(job #2087439)

Utilizator sichetpaulSichet Paul sichetpaul Data 13 decembrie 2017 17:43:13
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>

using namespace std;
int a[501][501][10],log[501];
int main()
{ int n,m,i,j,k,p,q,sol;
    ifstream f("plantatie.in");
    ofstream g("plantatie.out");
    f>>n>>m;
    for (i=1;i<=n;++i)
    for (j=1;j<=n;++j)
        f>>a[i][j][0];
    for (i=2;i<=n;++i)
        log[i]=log[i/2]+1;
    for (k=1;(1<<k)<=n;++k)
    for (i=1;i+(1<<k)-1<=n;++i)
    for (j=1;j+(1<<k)-1<=n;++j) {
        a[i][j][k]=max(a[i+(1<<(k-1))][j][k-1],a[i+(1<<(k-1))][j+(1<<(k-1))][k-1]);
        a[i][j][k]=max(a[i][j][k],max(a[i][j][k-1],a[i][j+(1<<(k-1))][k-1]));
    }
    for (q=1;q<=m;++q) {
        f>>i>>j>>k;
        p=log[k];
        sol=max(a[i][j][p],a[i+k-(1<<p)][j+k-(1<<p)][p]);
        sol=max(sol,max(a[i+k-(1<<p)][j][p],a[i][j+k-(1<<p)][p]));
        g<<sol<<'\n';
    }
    return 0;
}