Cod sursa(job #2134684)

Utilizator Andrei2000Andrei Mihailescu Andrei2000 Data 18 februarie 2018 11:19:30
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("plantatie.in");
ofstream fout ("plantatie.out");

int n,m,w[10][502][502],lg[100002];

int main()
{
    int a,b,k;
    fin>>n>>m;
    for(int i=1;i<=n;++i)
        for(int j=1;j<=n;++j)
            fin>>w[0][i][j];
    for(int i=2;i<=n;++i)lg[i]=lg[i/2]+1;
    for(int i=1;(1<<i)<=n;++i)
        for(int q=1;q<=n-(1<<i)+1;++q)
            for(int qq=1;qq<=n-(1<<i)+1;++qq)
                w[i][q][qq]=max(max(w[i-1][q][qq],
                                w[i-1][q][qq+(1<<(i-1))]),max(
                                w[i-1][q+(1<<(i-1))][qq],
                                w[i-1][q+(1<<(i-1))][qq+(1<<(i-1))]));
    for(int ii=1;ii<=m;++ii){
        int i,j;
        fin>>i>>j>>k;
        fout<<max(max(w[lg[k]][i][j],
                      w[lg[k]][i][j+k-(1<<lg[k])]),max(
                      w[lg[k]][i+k-(1<<lg[k])][j],
                      w[lg[k]][i+k-(1<<lg[k])][j+k-(1<<lg[k])]))<<'\n';
    }
    return 0;
}