Cod sursa(job #3161798)

Utilizator mihaistamatescuMihai Stamatescu mihaistamatescu Data 27 octombrie 2023 23:31:29
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>

using namespace std;

int n, m, i1, i2, j1, j2, L, len, k, p, lat, i, j;
int r[10][510][510], E[510];

int main() {
    ifstream fin("plantatie.in");
    ofstream fout("plantatie.out");
    fin >> n >> m;
    for (i = 1; i <= n; i++) {
        for (j = 1; j <= n; j++) {
            fin >> r[0][i][j];
        }
    }
    for (p = 1; lat <= n; p++) {
        lat = (1 << p);
        for (i1 = 1; i1 <= n - lat + 1; i1++) {
            for (j1 = 1; j1 <= n - lat + 1; j1++) {
                i2 = i1 + lat / 2;
                j2 = j1 + lat / 2;
                r[p][i1][j1] = max(max(r[p - 1][i1][j1], r[p - 1][i2][j1]), max(r[p - 1][i1][j2], r[p - 1][i2][j2]));
            }
        }
    }
    for (i = 2; i <= n; i++) {
        E[i] = 1 + E[i / 2];
    }
    for (; m; m--) {
        fin >> i1 >> j1 >> L;
        k = E[L];
        len = (1 << k);
        i2 = i1 + L - len;
        j2 = j1 + L - len;
        fout << max(max(r[k][i1][j1], r[k][i1][j2]), max(r[k][i2][j1], r[k][i2][j2])) << "\n";
    }
    return 0;
}