Cod sursa(job #2717549)

Utilizator AACthAirinei Andrei Cristian AACth Data 7 martie 2021 16:26:15
Problema Plantatie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int n,q;
int rmq[501][501][10];
int max4(int a, int b, int c, int d)
{
    return max(max(a,b),max(c,d));
}
int mxi;
int ans;
int main()
{
    f>>n>>q;
    int i,j;
    for(i = 0; i < n; ++i)
        for(j = 0; j < n; ++j)
            f>>rmq[i][j][0];
    int len_max = log2(n);
    int len;
    for(len = 1; len <= len_max; len ++)
    {
        int delta_check = (1<<len);
         for(i = 0; i + delta_check - 1  < n; ++i)
            for(j = 0; j + delta_check - 1 < n; ++j)
            {
                int p1,p2,p3,p4;
                int delta = 1<<(len-1);
                p1 = rmq[i][j][len - 1];
                p2 = rmq[i + delta][j][len - 1];
                p3 = rmq[i][j + delta][len - 1];
                p4 = rmq[i + delta][j + delta][len - 1];
                rmq[i][j][len] = max4(p1,p2,p3,p4);
            }
    }

    while(q--)
    {
        int xs,ys,dim;
        f>>xs>>ys>>dim;
        --xs;
        --ys;
        int len = log2(dim);
        int len_total = (1<<len);
        int delta = 1 - len_total;
        int xf = xs + dim - 1;
        int yf = ys + dim - 1;
        int p1,p2,p3,p4;
        p1 = rmq[xs][ys][len];
        p2 = rmq[xs][yf + delta][len];
        p3 = rmq[xf + delta][ys][len];
        p4 = rmq[xf + delta][yf + delta][len];
        g<<max4(p1,p2,p3,p4)<<'\n';
    }
    return 0;
}