Cod sursa(job #2056644)

Utilizator LauraNaduLaura Nadu LauraNadu Data 4 noiembrie 2017 12:36:53
Problema Plantatie Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<fstream>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int n, m, d[1005][1005][20], i, j, l, i2, j2, sol, k, lg[1005];
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;k<=lg[n];k++)
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
            {
                d[i][j][k]=d[i][j][k-1];
                d[i][j][k]=max(d[i][j][k], d[i][j+(1<<(k-1))][k-1]);
                d[i][j][k]=max(d[i][j][k], d[i+(1<<(k-1))][j][k-1]);
                d[i][j][k]=max(d[i][j][k], d[i+(1<<(k-1))][j+(1<<(k-1))][k-1]);
            }

    for(;m!=0;m--)
    {
        f>>i>>j>>l;
        i2=i+l-1;
        j2=j+l-1;
        l=lg[l];
        sol=max(d[i][j][l], d[i][j2-(1<<l)+1][l]);
        sol=max(sol, d[i2-(1<<l)+1][j][l]);
        sol=max(sol, d[i2-(1<<l)+1][j2-(1<<l)+1][l]);
        g<<sol<<"\n";
    }
    return 0;
}