Cod sursa(job #2545263)

Utilizator mihnea.anghelMihnea Anghel mihnea.anghel Data 12 februarie 2020 22:42:06
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#define f in
#define g out

using namespace std;
ifstream in ( "plantatie.in" );
ofstream out( "plantatie.out" );
int p2[510], d[10][510][510];
int n, q, i, j, e, i1, j1, x, k;

int main() {
    
    for ( i=2; i <= 500; i++ )
        p2[i] = 1+p2[i/2];
    
    f>>n>>q;
    for ( i=1; i <= n; i++ )
        for ( j=1; j <= n; j++ )
            f>>d[0][i][j];
    
    for ( e=1; (1<<e) <= n; e++ )
        for ( i=1; i <= n; i++ )
            for ( j=1; j <= n; j++ ){
                i1 = min ( n, i+(1<<(e-1)) );
                j1 = min ( n, j+(1<<(e-1)) );
                d[e][i][j] = max ( d[e-1][i][j], max ( d[e-1][i][j1], max ( d[e-1][i1][j], d[e-1][i1][j1]) ) );
            }
    
    for ( ; q--; ){
        f>>i>>j>>k;
        i1 = i+k-(1<<p2[k]);
        j1 = j+k-(1<<p2[k]);
        g<<max ( d[p2[k]][i][j], max ( d[p2[k]][i][j1], max ( d[p2[k]][i1][j], d[p2[k]][i1][j1] ) ) )<<"\n";
    }
    
    return 0;
}