Cod sursa(job #2634249)

Utilizator AlexMariMarinescu Alexandru AlexMari Data 10 iulie 2020 10:57:50
Problema Plantatie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<bits/stdc++.h>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");

int n,a[505][505][10],maxp,m,startx,starty,val,ans;

int main()
{
    int i,j,p,k,t,x,y;
    fin>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
           fin>>a[i][j][0];
    p=1;
    while(p<=n)
    {
        maxp++;
        p=p*2;
    }
    maxp--;
    p=1;
    for(t=1;t<=maxp;t++)
    {
         for(i=1;i<=n-2*p+1;i++)
            for(j=1;j<=n-2*p+1;j++)
               a[i][j][k]=max(a[i][j][k-1],max(a[i+p][j+p][k-1],max(a[i][j+p][k-1],a[i+p][j][k-1])));
         p=p*2;
    }
    for(i=1;i<=m;i++)
    {
        fin>>x>>y>>val;
        p=1;
        k=0;
        while(p<=val)
        {
            k++;
            p=p*2;
        }
        p=p/2;
        k--;
       ans=max(a[x][y][k],max(a[x+val-p][y+val-p][k],max(a[x][y+val-p][k],a[x+val-p][y][k])));
       fout<<ans<<'\n';
    }
    return 0;
}