Cod sursa(job #2056686)

Utilizator LauraNaduLaura Nadu LauraNadu Data 4 noiembrie 2017 12:48:23
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int n, m, d[510][510][11], i, j, l, i2, j2, sol, k;
int main()
{
    f>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            f>>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++)
    {
        f>>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]);
        g<<sol<<"\n";
    }
    return 0;
}