Cod sursa(job #2837247)

Utilizator Linca_AmaliaLinca Mihaela Amalia Linca_Amalia Data 21 ianuarie 2022 23:13:46
Problema Plantatie Scor 10
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, i, j, i1, i2, j1, j2, I, J, K, k, len, lat, p, e[505], S[20][505][505];

int main(){
    fin >> n >> m;
    for (i = 1; i <= n; i++)
        for (j = 1; j <= n; j++)
            fin >> S[0][i][j];
    e[1] = 0;
    for (i = 2; i <= n; i++)
        e[i] = 1 + e[i/2];
    for ( p = 1, lat = 2; lat <= n; p++, lat *= 2 ){
        for ( i1 = 1; i1 <= n - lat + 1; i1++ ){
            for ( 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 (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][i1][j1], S[k][i2][j1] ), max( S[k][i1][j2], S[k][i2][j2] ) ) << "\n";
    }

    return 0;
}