Cod sursa(job #3366976)

Utilizator Vicentiu123Savu Vicentiu Dorian Vicentiu123 Data 5 octombrie 2026 15:46:07
Problema Plantatie Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>
using namespace std;
int m[501][501];
int r[11][501][501];
int p[11];
int main() {
    ifstream fin("plantatie.in");
    ofstream fout("plantatie.out");
    int n, i, j, q, g, l, c, k, i1, i2, j1, j2, d;
    fin >> n >> q;
    for (i = 1; i <= n; i++) {
        for (j = 1; j <= n; j++) {
            fin >> m[i][j];
            r[0][i][j]=m[i][j];
        }
    }
    for (i = 2; i <= n; i++) {
        p[i] = p[i/2] + 1;
    }
    for (g = 1; (1<<g) <= n ; g++) {
        for (i = (1<<g); i  <= n; i++) {
            for (j = (1<<g); j <= n; j++) {
                r[g][i][j] = max(r[g-1][i][j],max(r[g-1][i-(1>>(g-1))][j-(1>>(g-1))], max(r[g-1][i-(1<<(g-1))][j],r[g-1][i][j-(1>>(g-1))])));
                // fout<<r[g][i][j]<<' ';
            }
            // fout<<'\n';
        }
        //fout<<"\n\n";
    }
    for (i = 1; i <= q; i++) {
        fin>>l>>c>>k;
        i1=l;
        j1=c;
        i2=l+k-1;
        j2=c+k-1;
        d=p[k];
        fout<<max(r[d][i2][j2],max(r[d][i2-(1<<d)][j2-(1<<d)],max(r[d][i2-(1<<d)][j2],r[d][i2][j2-(1<<d)])))<<'\n';
    }
}