Cod sursa(job #2752024)

Utilizator EmiHHodoroaba Emanuel EmiH Data 16 mai 2021 14:33:03
Problema Plantatie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <iostream>
#include <bits/stdc++.h>
#include <fstream>
#include <cmath>

using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int main()
{
    long n,m,x,y, maxim;
    in >> n >> m;
    int ans[502][502][11];

    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            in >> ans[i][j][0];
        }
    }

    for(int z=1;(1<<z)<=n;z++)
        for(int i=1;i+(1<<z)-1<=n;i++)
            for(int j=1;j+(1<<z)-1<=n;j++){
                        ans[i][j][z]=max(ans[i][j][z-1], ans[i][j+(1<<(z-1))][z-1]);
                        ans[i][j][z]=max(ans[i+(1<<(z-1))][j][z-1],ans[i][j][z]);
                        ans[i][j][z]=max(ans[i+(1<<(z-1))][j+(1<<(z-1))][z-1],ans[i][j][z]);
                }
    int k;
    for(int i=1;i<=m;i++){
        in >> x >> y >> k;
        int p = log2(k);
        maxim=max(ans[x][y][p], ans[x][y+k-(1<<p)][p]);
        maxim=max(maxim, ans[x+k-(1<<p)][y][p]);
        maxim=max(maxim, ans[x+k-(1<<p)][y+k-(1<<p)][p]);
        out << maxim << "\n";
    }

    return 0;
}