Cod sursa(job #2834515)

Utilizator AlexSerban21Serban Alexandru AlexSerban21 Data 17 ianuarie 2022 10:09:57
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
using namespace std;
int n,m,i,p,j,w,ia,ib,ja,jb,lat,l,lg,k,v[10][502][502],x[502];
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int maxim(int a, int b)
{
    if (a>b)
        return a;
    else
        return b;
}
int main()
{
    fin>>n>>m;
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=n; j++)
            fin>>v[0][i][j];
    }
    for (p=1,lat=2; lat<=n; p++,lat*=2)
    {
        for (ia=1; ia<=n-lat+1; ia++)
        {
            for (ja=1; ja<=n-lat+1; ja++)
            {
                ib=ia+(lat>>1);
                jb=ja+(lat>>1);
                v[p][ia][ja] = max(max(v[p-1][ia][ja],v[p-1][ib][ja]),max(v[p-1][ia][jb],v[p-1][ib][jb]));
            }
        }
    }
    x[1]=0;
    for (i=2; i<=n; i++)
        x[i]=1+x[i/2];
    for (w=m; w>0; w--)
    {
        fin>>ia>>ja>>l;
        k=x[l];
        lg=(1<<k);
        ib=ia+l-lg;
        jb=ja+l-lg;
        fout<<max(max(v[k][ia][ja],v[k][ia][jb]),max(v[k][ib][ja],v[k][ib][jb]))<<"\n";
    }
    return 0;
}