Cod sursa(job #2194524)

Utilizator vladboss2323Ciorica Vlad vladboss2323 Data 13 aprilie 2018 17:50:01
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream in("plantatie.in");
ofstream out("plantatie.out");

const int N=505;


int n,m,a[N][N][20],lg[N];


int main()
{
    int i,j,l,q,L;
    in>>n>>m;
    for(i=1; i<=n; i++)
        for(j=1; j<=n; j++)
            in>>a[i][j][0];
    lg[1]=0;
    for(i=2; i<=n; i++)
        lg[i]=1+lg[i/2];
    for(i=1; 1<<i<=n; i++)
        for(j=1; j<=n-(1<<(i-1)); j++)
            for(q=1; q<=n-(1<<(i-1)); q++)
            {
                a[j][q][i]=max(max(a[j][q][i-1],a[j][q+(1<<(i-1))][i-1]),max(a[j+(1<<(i-1))][q][i-1],a[j+(1<<(i-1))][q+(1<<(i-1))][i-1]));
            }
    while(m!=0)
    {
        in>>i>>j>>l;
        L=lg[l];
        out<<max(max(a[i][j][L],a[i][j+l-(1<<L)][L]),max(a[i+l-(1<<L)][j][L],a[i+l-(1<<L)][j+l-(1<<L)][L]))<<'\n';
        m--;
    }
    return 0;
}