Cod sursa(job #1218424)

Utilizator MaarcellKurt Godel Maarcell Data 10 august 2014 23:43:33
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <iostream>
using namespace std;

int N,M, dp[510][510][10], lg[510];

int main(){
    ifstream in("plantatie.in");
    ofstream out("plantatie.out");
    in >> N >> M;

    int i,j,k,x,y,l;
    for (i=1; i<=N; i++)
        for (j=1; j<=N; j++)
            in >> dp[i][j][0];

    for (i=2; i<=N; i++)
        lg[i]=lg[i/2]+1;

    for (k=1; (1<<k)<=N; k++){
        l=1<<(k-1);
        for (i=1; i+l-1<=N; i++)
            for (j=1; j+l-1<=N; j++)
                dp[i][j][k]=max(max(dp[i][j][k-1],dp[i][j+l][k-1]),max(dp[i+l][j][k-1],dp[i+l][j+l][k-1]));
    }

    for (i=1; i<=M; i++){
        in >> x >> y >> k;
        l=lg[k];
        out << max(max(dp[x][y][l],dp[x][k+y-(1<<l)][l]),max(dp[k+x-(1<<l)][y][l],dp[k+x-(1<<l)][k+y-(1<<l)][l])) << "\n";
    }
    return 0;
}