Cod sursa(job #2021376)

Utilizator refugiatBoni Daniel Stefan refugiat Data 13 septembrie 2017 16:26:55
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#include <iostream>
using namespace std;
ifstream si("plantatie.in");
ofstream so("plantatie.out");

const int NMAX=505;
const int LGMAX=10;

int v[NMAX][NMAX][LGMAX],lg[NMAX];

int main()
{
    int n,m;
    si>>n>>m;
    for(int i=2;i<=n;i++)
        lg[i]=lg[i/2]+1;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            si>>v[i][j][0];
    for(int k=1;(1<<k)<=n;k++)
        for(int i=1;i+(1<<(k-1))<=n;i++)
            for(int j=1;j+(1<<(k-1))<=n;j++)
                v[i][j][k]=max(max(v[i][j][k-1],
                                   v[i+(1<<(k-1))][j][k-1]),
                               max(v[i][j+(1<<(k-1))][k-1],
                                   v[i+(1<<(k-1))][j+(1<<(k-1))][k-1]));
    int x,y,z,l,c,ln;
    for(int i=1;i<=m;i++)
    {
        si>>x>>y>>z;
        l=z+x;
        c=z+y;
        ln=lg[z];
        so<<max(max(v[x][y][ln],
                      v[l-(1<<ln)][y][ln]),
                  max(v[x][c-(1<<ln)][ln],
                      v[l-(1<<ln)][c-(1<<ln)][ln]))<<'\n';
    }
}