Cod sursa(job #3160631)

Utilizator AlexSerban21Serban Alexandru AlexSerban21 Data 24 octombrie 2023 18:55:35
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>
using namespace std;
ifstream fin ("plantatie.in");
ofstream fout ("plantatie.out");
int i1,i2,j1,j2,t,n,m,i,j,q,k,l,p,v[9][501][501],e[501];
int maxim (int a,int b,int c,int d)
{
    return max (a,max (b,max (c,d)));
}
int main()
{
    fin>>n>>q;
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=n; j++)
            fin>>v[0][i][j];
    }
    for (p=1; (1<<p)<=n; p++)
    {
        l=(1<<(p-1));
        for (i1=1; i1<=n; i1++)
        {
            for (j1=1; j1<=n; j1++)
            {
                i2=i1+l;
                j2=j1+l;
                v[p][i1][j1]=v[p-1][i1][j1];
                if (i2<=n)
                    v[p][i1][j1]=max (v[p][i1][j1],v[p-1][i2][j1]);
                if (j2<=n)
                    v[p][i1][j1]=max (v[p][i1][j1],v[p-1][i1][j2]);
                if (i2<=n&&j2<=n)
                    v[p][i1][j1]=max (v[p][i1][j1],v[p-1][i2][j2]);
            }
        }
    }
    for (i=2; i<=n; i++)
        e[i]=e[i/2]+1;
    for (t=1; t<=q; t++)
    {
        fin>>i1>>j1>>k;
        i2=i1+k-1;
        j2=j1+k-1;
        p=e[k];
        l=(1<<p);
        fout<<maxim (v[p][i1][j1],v[p][i2-l+1][j1],v[p][i1][j2-l+1],v[p][i2-l+1][j2-l+1])<<"\n";
    }
    return 0;
}