Cod sursa(job #2309359)

Utilizator EdgeLordXDOvidiuPita EdgeLordXD Data 28 decembrie 2018 21:24:02
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<bits/stdc++.h>
#define ll long long
#define f first
#define s second
#define N 501
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int dp[N][N][10];
int main(){
    int n,m,i,j,k,l;
    in>>n>>m;
    for(i=1; i<=n; ++i)
        for(j=1; j<=n; ++j)
            in>>dp[i][j][0];
    for(k=1; (1<<k)<=n; ++k)
        for(i=n-(1<<k)+1; i>=1; --i)
            for(j=n-(1<<k)+1; j>=1; --j)
                dp[i][j][k]=max(max(dp[i][j][k-1], dp[i+(1<<(k-1))][j][k-1]), max(dp[i][j+(1<<(k-1))][k-1], dp[i+(1<<(k-1))][j+(1<<(k-1))][k-1]));
    while(m--){
        in>>i>>j>>k;
        l=log2(k);
        out<<max(max(dp[i][j][l], dp[i+k-(1<<l)][j][l]), max(dp[i][j+k-(1<<l)][l], dp[i+k-(1<<l)][j+k-(1<<l)][l]))<<"\n";
    }
    return 0;
}