Cod sursa(job #1766343)

Utilizator danstefanDamian Dan Stefan danstefan Data 27 septembrie 2016 21:04:03
Problema Plantatie Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>
using namespace std;
int n,m,i,in,j,p,a[510][20][510],x[20][510],X,Y,Z,Log[510],ans,k,r,l;
int main()
{
    freopen("plantatie.in","r",stdin);
    freopen("plantatie.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=2; i<=n; ++i)
        Log[i]=Log[i/2]+1;
    for(in=1; in<=n; ++in)
    {
        for(p=1; p<=n; ++p)
            cin>>x[0][p];
        for(i=1; (1<<i)<=n; ++i)
            for(j=1; j<=n-(1<<i)+1; ++j)
            {
                x[i][j]=max(x[i-1][j],x[i-1][j+(1<<(i-1))]);
                a[in][i][j]=x[i][j];
            }
    }
    for(in=1; in<=m; ++in)
    {
        scanf("%d%d%d",&X,&Y,&Z);
        l=Y;
        r=Y+Z-1;
        k=Log[r-l+1];
        ans=0;
        for(i=X; i<=X+Z-1; ++i)
            ans=max(ans,max(a[i][k][l],a[i][k][r-(1<<k)+1]));
        printf("%d\n",ans);
    }
    return 0;
}