Cod sursa(job #1081958)

Utilizator WyvernFMI Stanescu Leonard Wyvern Data 13 ianuarie 2014 23:49:05
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fi("plantatie.in");
ofstream fo("plantatie.out");
int a[12][512][512],k,q,n,m,x,y;
inline int maxim(int x,int y) {return x>y?x:y;}
int main() {
    fi>>n>>m;
    for (int i=0;i<n;++i)
        for (int j=0;j<n;++j)
            fi>>a[0][i][j];
    for (int k=1;(1<<k)<=n;++k)
        for (int i=0;i<=n;++i)
            for (int j=0;j<=n;++j)
                a[k][i][j]=maxim(maxim(a[k-1][i][j],a[k-1][i+(1<<(k-1))][j]),maxim(a[k-1][i][j+(1<<(k-1))],a[k-1][i+(1<<(k-1))][j+(1<<(k-1))]));
    for (int i=1;i<=m;++i) {
        fi>>x>>y>>k;
        q=1;x--;y--;
        int nr=0;
        while (q<=k) {
            nr++;
            q*=2;
        }
        q/=2;nr--;
        fo<<maxim(maxim(a[nr][x][y],a[nr][x+k-q][y]),maxim(a[nr][x][y+k-q],a[nr][x+k-q][y+k-q]))<<'\n';
    }
    return 0;
}