Cod sursa(job #3231650)

Utilizator bravo_tiramisutiramisu bravo_tiramisu Data 27 mai 2024 15:32:44
Problema Plantatie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.53 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
#include <climits>


using namespace std;

#define NMAX 505
#define MMAX 75005

int C[NMAX][NMAX][15], n, m;

int main(){ 
    
    int i, j, t, lung, x, y, l, val;
    
    ifstream fin("plantatie.in");
    ofstream fout("plantatie.out");
    
    fin >> n >> m;
    for(i = 1; i <= n; i++){
        for(j = 1; j <= n; j++)
        {
            fin >> C[i][j][0];
        }
    }
        
    lung = int(log2(n));
    
    for (int x = 0; x < n; x++) {
    for (int y = 0; y < n; y++) {
        for (int size = 1; size <= lung; size++) {
            if (x + size <= n && y + size <= n) {
                // Calculate the maximum value in the submatrix
                int maxVal = INT_MIN;
                for (int i = x; i < x + size; i++) {
                    for (int j = y; j < y + size; j++) {
                        maxVal = max(maxVal, C[i][j][size-1]);
                    }
                }
                // Store the maximum value in the 3D array
                C[x][y][size] = maxVal;
            }
        }
    }
}
        
    
    int rez, put;
    for(i = 1; i <= m; i++)
    {
        fin >> x >> y >> l;
        put = int(log2(l)); 
        val = 1 << put;
        
        int max1 = max(C[x][y][put], C[x - val + l][y][put]);
        int max2 = max(C[x][y - val + l][put], C[x - val + l][y - val + l][put]);
        rez = max(max1, max2); 
        
        fout << rez << "\n";
    }
    return 0;
}