Cod sursa(job #2145380)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 27 februarie 2018 12:28:16
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#include <iostream>

using namespace std;

ifstream f("plantatie.in");
ofstream g("plantatie.out");

int dp[10][505][505], i, j, n, m, log2[505], l, x, y, w;

int main() {
    f >> n >> m;
    for (i = 1; i <= n; i++)
        for (j = 1; j <= n; j++)
            f >> dp[0][i][j], log2[i+1] = log2[(i+1)/2]+1;

    for (w = 1; (1<<w) <= n; w++) {
        for (i = 1; i+(1<<w)-1 <= n; i++)
            for (j = 1; j+(1<<w)-1 <= n; j++) {
                int ii = i+(1<<(w-1)), jj = j+(1<<(w-1));
                dp[w][i][j] = max(max(dp[w-1][i][j], dp[w-1][i][jj]),
                                  max(dp[w-1][ii][j], dp[w-1][ii][jj]));
            }
    }

    while (m--) {
        f  >> i >> j >> l;
        w = log2[l];

        int ii = i+l-(1<<w), jj = j+l-(1<<w);
        g << max(max(dp[w][i][j], dp[w][ii][jj]),
                 max(dp[w][ii][j], dp[w][i][jj])) << '\n';
    }
    return 0;
}