Cod sursa(job #3230837)

Utilizator albuAlbu Victor albu Data 22 mai 2024 22:30:53
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n, m, d[510][510][11], i, j, l, i2, j2, sol, k;
int main()
{
    fin>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            fin>>d[i][j][0];
    /*for(i=2;i<=n;i++)
        lg[i]=lg[i/2]+1;*/
    for(k=1;(1<<k)<=n;k++)
        for(i=1;i<=n-(1<<(k-1))+1;i++)
            for(j=1;j<=n-(1<<(k-1))+1;j++)
            {
                int p=(1<<(k-1));
                d[i][j][k]=d[i][j][k-1];
                d[i][j][k]=max(d[i][j][k], d[i][j+p][k-1]);
                d[i][j][k]=max(d[i][j][k], d[i+p][j][k-1]);
                d[i][j][k]=max(d[i][j][k], d[i+p][j+p][k-1]);
            }
    for(int ii=1;ii<=m;ii++)
    {
        fin>>i>>j>>l;
        i2=i+l-1;
        j2=j+l-1;
        k=log2(l);
        int p=(1<<k);
        sol=d[i][j][k];
        sol=max(d[i][j][k], d[i][j2-p+1][k]);
        sol=max(sol, d[i2-p+1][j][k]);
        sol=max(sol, d[i2-p+1][j2-p+1][k]);
        fout<<sol<<"\n";
    }
    return 0;
}