Cod sursa(job #2481094)

Utilizator olteanupetru02Olteanu Petru olteanupetru02 Data 26 octombrie 2019 13:44:42
Problema Plantatie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>

using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");

int t[510][510],r[10][510][510],n,m,p,q,k,log[510];

int main()
{
    in>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            in>>t[i][j];
    log[1]=0;
    for(int i=1;i<=n;i++)
        log[i]=1+log[i/2];
    for(int l=1;l<=log[n];l++)
        for(int i=1;i<=n-(1<<l);i++)
            for(int j=1;j<=n-(1<<l);i++){
                int R1=max(r[l-1][i][j],r[l-1][i][j+(1<<l-1)]);
                int R2=max(r[l-1][i+(1<<l-1)][j],r[l-1][i+(1<<l-1)][j+(1<<l-1)]);
                r[l][i][j]=max(R1,R2);
            }
    for(int i=1;i<=m;i++){
        in>>p>>q>>k;
        p--;
        q--;
        int p2=p+k-1;
        int q2=q+k-1;
        int l=log[k];
        int R3=max(r[l][p][q],r[l][p][q2-(1<<l)+1]);
        int R4=max(r[l][p2-(1<<l)+1][q],r[l][p2-(1<<l)+1][q2-(1<<l)+1]);
        out<<max(R3,R4)<<"\n";
    }
    return 0;
}