Cod sursa(job #3254223)

Utilizator Iulya10Toader Iulia Iulya10 Data 6 noiembrie 2024 17:31:59
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
#define CT 505
int r[10][CT][CT];
int e[CT];
int n,m,i,i1,i2,j,jj1,jj2,lat,p,L,k;
int main()
{
    fin>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++) fin>>r[0][i][j];
    for(p=1,lat=2;lat<=n;p++,lat*=2)
        for(i1=1;i1<=n;i1++)
            for(jj1=1;jj1<=n;jj1++)
    {
        i2=i1+(lat>>1);
        jj2=jj1+(lat>>1);
        r[p][i1][jj1]=max(max(r[p-1][i1][jj1],r[p-1][i2][jj1]),max(r[p-1][i1][jj2],r[p-1][i2][jj2]));
    }
    e[1]=0;
    for(i=2;i<=n;i++) e[i]=1+e[i/2];
    while(m)
    {
        fin>>i1>>jj1>>L;
        k=e[L];
        lat=(1<<k);
        i2=i1+L-lat;
        jj2=jj1+L-lat;
        fout<<max(max(r[k][i1][jj1],r[k][i1][jj2]),max(r[k][i2][jj1],r[k][i2][jj2]));
        fout<<'\n';
        m--;
    }
    return 0;
}