Cod sursa(job #2849840)

Utilizator TraianQTraianQ TraianQ Data 15 februarie 2022 20:50:05
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
using namespace std;
int r[9][501][501],log2[501];
int maxx(int a,int b,int c,int d)
{
    return max(max(a,b),max(c,d));
}
int main()
{
    ifstream cin("plantatie.in");
    ofstream cout("plantatie.out");
    int n,q;
    cin>>n>>q;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            cin>>r[0][i][j];
    for(int l=1;(1<<l)<=n;l++)
        for(int i=(1<<l);i<=n;i++)
            for(int j=(1<<l);j<=n;j++)
            {
                int lat=(1<<(l-1));
                r[l][i][j]=maxx(r[l-1][i-lat][j-lat],r[l-1][i-lat][j],r[l-1][i][j-lat],r[l-1][i][j]);
            }
    for(int i=2;i<=n;i++)
        log2[i]=1+log2[i/2];
    int l,c,lat;
    for(int i=1;i<=q;i++)
    {
        cin>>l>>c>>lat;
        l+=lat-1,c+=lat-1;
        int e=log2[lat];
        lat-=(1<<e);
        cout<<maxx(r[e][l-lat][c-lat],r[e][l-lat][c],r[e][l][c-lat],r[e][l][c])<<'\n';
    }
    return 0;
}