Cod sursa(job #3366982)

Utilizator Vicentiu123Savu Vicentiu Dorian Vicentiu123 Data 5 octombrie 2026 16:05:19
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>
using namespace std;
int m[501][501];
int r[11][501][501];
int p[500];
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][i1+(1<<d)-1][j1+(1<<d)-1],max(r[d][i1+(1<<d)-1][j2],r[d][i2][j1+(1<<d)-1])))<<'\n';
    }
}