Cod sursa(job #1543785)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 6 decembrie 2015 11:43:27
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#define FOR(a,b,c) for(int a=b; a<=c; ++a)
#define max(a,b) (a>b?a:b)
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int n, m, i, j, x, y, z;
int a[10][510][510];
int main(){
    f>>n>>m;
    FOR(i,1,n)
        FOR(j,1,n)
            f>>a[0][i][j];
    z=0;
    while( (1<<z++)<=n );
    z-=2;
    FOR(i,1,z)
        FOR(x,1,n)
            FOR(y,1,n)
                a[i][x][y]=max( max(a[i-1][x][y], a[i-1][x+( 1<<(i-1) )][y+( 1<<(i-1) )]), max(a[i-1][x+( 1<<(i-1) ) ][y], a[i-1][x][y+( 1<<(i-1) )]) );
    FOR(intrebari,1,m)
    {
        f>>x>>y>>z;
        i=0;
        while( (1<<i++)<=z );
        i-=2;
        g<<max( max(a[i][x][y], a[i][x+z-(1<<i)][y+z-(1<<i)]), max(a[i][x+z-(1<<i)][y], a[i][x][y+z-(1<<i)]) )<<"\n";
    }
    return 0;
}