Cod sursa(job #2133100)

Utilizator filip.mihalutMihalut Filip filip.mihalut Data 16 februarie 2018 15:30:21
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <cmath>
#define nmax 505

using namespace std;

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

int a[10][nmax][nmax] , n , t , m , i , j , p , q, k,x,y;

int maxim(int a,int b,int c,int d)
{
    a = max(a,b);
    c = max(c,d);
    return max(a,c);
}

int main()
{
    f >> n >> t;

    for(i = 1;i <= n;i++)
        for(j = 1;j <= n;j++)
            f >> a[0][i][j];

    m = log2(n);
    k = 1;

    for(q = 1;q <= m;q++)
    {
        for(i = 1;i <= n;i++)
            for(j = 1;j <= n;j++)
                a[q][i][j] = maxim(a[q - 1][i][j] , a[q - 1][i + k][j] , a[q - 1][i][j + k] , a[q - 1][i + k][j + k]);
        k *= 2;
    }

    for(i = 1;i <= t;i++)
    {
        f >> x >> y >> k;
        p = log2(k);
        k -= pow(2,p);
        g << maxim(a[p][x][y] , a[p][x + k][y] ,a[p][x][y + k],a[p][x + k][y + k])<< '\n';
    }
    return 0;
}