Cod sursa(job #2837254)

Utilizator Linca_AmaliaLinca Mihaela Amalia Linca_Amalia Data 21 ianuarie 2022 23:31:51
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
using namespace std;

ifstream fin("plantatie.in");
ofstream fout("plantatie.out");

int n, m, i2, j2, I, J, K, k, len, lat, e[505], S[20][505][505];

int main(){
    fin >> n >> m;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
            fin >> S[0][i][j];
    e[1] = 0;
    for (int i = 2; i <= n; i++)
        e[i] = 1 + e[i/2];
    for ( int p = 1, lat = 2; lat <= n; p++, lat *= 2 ){
        for ( int i1 = 1; i1 <= n - lat + 1; i1++ ){
            for ( int j1 = 1; j1 <= n - lat + 1; j1++ ){
                i2 = i1 + (lat >> 1);
                j2 = j1 + (lat >> 1);
                S[p][i1][j1] = max ( max ( S[p-1][i1][j1], S[p-1][i2][j1] ), max( S[p-1][i1][j2], S[p-1][i2][j2] ) );
            }
        }
    }
    for (int i = 1; i <= m; i++){
        fin >> I >> J >> K;
        k = e[K];
        len = (1<<k);
        i2 = I + K - len;
        j2 = J + K - len;
        fout << max ( max ( S[k][I][J], S[k][I][j2] ), max( S[k][i2][J], S[k][i2][j2] )) << "\n";
    }

    return 0;
}