Cod sursa(job #3159929)

Utilizator Bianca2507Negret Bianca Bianca2507 Data 22 octombrie 2023 15:05:29
Problema Plantatie Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#include <climits>
#include <bitset>
using namespace std;
ifstream cin("plantatie.in");
ofstream cout("plantatie.out");
int n, m, r[11][502][502], e[502], exp, x, y, k,len;
int main()
{
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
            cin >> r[0][i][j];
    e[1] = 0;
    for (int p = 1; (1 << p) <= n; p++)
        for (int i = 1; i <= n; i++)
            for(int j = 1; j <= n; j++)
        {
                r[p][i][j] = r[p - 1][i][j];
                int i1 = i + (1 << (p - 1));
                int j1 = j + (1 << (p - 1));
                if (i1 <= n && j1 <= n)
                    r[p][i][j] = max(r[p][i][j], max(r[p - 1][i][j1], max(r[p - 1][i1][j],r[p-1][i1][j1])));
        }
    for (int i = 1; i <= m; i++)
    {
        cin >> x >> y >> k;
        exp = e[k];
        len = (1 << exp);
        int i1 = x + k - len;
        int j1 = y + k - len;
        cout << max(r[exp][x][y], max(r[exp][i1][y], max(r[exp][i1][j1], r[exp][x][j1]))) << '\n';
    }
    return 0;
}