Cod sursa(job #3230226)

Utilizator tobiasSpartanu89Rosianu Radu tobiasSpartanu89 Data 20 mai 2024 01:29:19
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <algorithm>
#include <fstream>

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

int N,M, r[17][502][502], E[502];


int main() {
    f >> N >> M;
    for (int i = 1; i <= N; ++i)
        for (int j = 1; j <= N; ++j)
            f >> r[0][i][j];

    for (int p = 1, lat = 2; lat <= N; ++p, lat*=2){
        for (int i = 1; i <= N-lat+1; ++i){
            for (int j = 1; j <= N-lat+1; ++j){
                int x = i + (lat>>1), y = j + (lat>>1);
                r[p][i][j] = std::max(
                                std::max(r[p-1][i][j], r[p-1][i][y]),
                                std::max(r[p-1][x][j], r[p-1][x][y])
                        );

            }
        }
    }

    E[1] = 0;
    for (int i = 2; i <= N; ++i)
        E[i] = 1 + E[i/2];

    for(int t = 0; t < M; ++t){
        int x,y,lat;
        f >> x >> y >> lat;
        int p = E[lat];
        int len = (1<<p);

        g << std::max(
                std::max(r[p][x][y], r[p][x][y + lat - len]),
                std::max(r[p][x + lat - len][y], r[p][x + lat - len][y + lat - len])
                );
        g << "\n";
    }
    return 0;
}