Cod sursa(job #2292225)

Utilizator denmirceaBrasoveanu Mircea denmircea Data 29 noiembrie 2018 10:17:36
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n,m,i,j,k,L[505],t,p,maxx,maxx2,x,y,l,put;
int a[503][75003][11];
int main()
{
  fin>>n>>m;
  for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    fin>>a[i][j][0];

    L[1]=0;

    for(i=2;i<=n;i++)
        L[i]=L[i/2]+1;

    for(t=1;t<=L[n]+1;t++){
        p=(1<<t);
        for(i=1;i<=n-p+1;i++)
            for(j=1;j<=n-p+1;j++){
            a[i][j][t]=max(a[i][j][t-1],a[i][j+p/2][t-1]);
            maxx=max(a[i+p/2][j][t-1],a[i+p/2][j+p/2][t-1]);
            a[i][j][t]=max(a[i][j][t],maxx);
        }
    }
for(i=1;i<=m;i++){
    fin>>x>>y>>l;
    p=L[l];
    put=(1<<p);
    maxx=max(a[x][y][p],a[x+l-put][y][p]);
    maxx2=max(a[x][y+l-put][p],a[x+l-put][y+l-put][p]);
    fout<<max(maxx,maxx2)<<"\n";
}

}