Cod sursa(job #1280665)

Utilizator CiurezAndreiCiurez Marius-Andrei CiurezAndrei Data 2 decembrie 2014 12:26:44
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<fstream>
using namespace std;
int n,m,i,j,a,ii,l,k,il,jl,p[510],x[11][510][510];
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int maxim(int a,int b){
    if(a>b)
        return a;
    return b;
}
int main(){
    fin >> n >> m;
    p[1]=0;
    for(i=1;i<=509;i++){
        p[i]=p[i/2]+1;
    }
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            fin >> x[0][i][j];
        }
    }
    for(i=1;i<=p[n];i++){
        a=1<<(i-1);
        for(j=1;j<=n;j++){
            for(ii=1;ii<=n;ii++){
                x[i][j][ii]=maxim( x[i-1][j][ii], maxim( x[i-1][j][ii+a], maxim( x[i-1][j+a][ii], x[i-1][j+a][ii+a] ) ) );
            }
        }
    }

    for(l=1;l<=m;l++){
        fin >> i >> j >> k;
        a=p[k]-1;
        fout << maxim( x[a][i][j], maxim( x[a][i+k-(1<<a)][j], maxim( x[a][i][j+k-(1<<a)], x[a][i+k-(1<<a)][j+k-(1<<a)] ) ) ) << '\n';
    }
    return 0;
}