Cod sursa(job #1169369)

Utilizator pop_bogdanBogdan Pop pop_bogdan Data 10 aprilie 2014 23:25:56
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <algorithm>
using namespace std;

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

int N, T, D[501][501][10];
int x,y,z;

int main()
{
    is >> N >> T;
    for ( int i = 1; i <= N; ++i )
        for ( int j = 1; j <= N; ++j )
            is >> D[i][j][0];

    for ( int k = 1; ( 1 << k ) <= N; ++k  )
        for ( int i = 1; i + ( 1 << (k-1) ) <= N+1; ++i )

            for ( int j = 1; j + ( 1 << (k-1) ) <= N+1; ++j )
                D[i][j][k] = max(max(D[i][j][k-1],D[i+(1<<(k-1))][j][k-1]),max(D[i+(1<<(k-1))][j+(1<<(k-1))][k-1],D[i][j+(1<<(k-1))][k-1]));

    int it, step;
    for ( int i = 1; i <= T; ++i )
    {
        is >> x >> y >> z;
        it = 0;
        for ( step = 1; step <= z; step <<= 1, ++it);
        it -= 1;
        step/=2;
        os << max( max(D[x][y+z-step][it],D[x][y][it]),max(D[x+z-step][y+z-step][it],D[x+z-step][y][it]) )<<'\n';

    }
    return 0;
}