Cod sursa(job #21530)

Utilizator adi_nmAdrian Negreanu adi_nm Data 23 februarie 2007 19:56:39
Problema Plantatie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream.h>
#include <math.h>
#include <iomanip.h>

long p[1024][1024][10];
long n,m,i,j,k,t,p2,f,x1,x2,k2,r;
int main (){
  ifstream fin("plantatie.in");
  ofstream fout("plantatie.out");
  fin>>n>>m;
  for (i=1; i<=n; i++)
    for (j=1; j<=n;j++) fin>>p[i][j][0];
  for (k=1;k<=9;k++){
    f=1<<(k-1);
  for (i=1; i<=n; i++)
    for (j=1; j<=n;j++){
        r=p[i][j][k-1];x1=i+f; x2=j+f;k2=k-1;
        if (p[i][x2][k2]>r)  r=p[i][x2][k2];
        if (p[x1][j][k2]>r)  r=p[x1][j][k2];
        if (p[x1][x2][k2]>r) r=p[x1][x2][k2];
        p[i][j][k]=r;
      }
  }
  for (t=1;t<=m;t++){
    fin>>i>>j>>k;
    p2=(int)(log(k)/log(2)); f=1<<p2;
        r=p[i][j][p2];x1=i+k-f; x2=j+k-f;
        if (p[i][x2][p2]>r) r=p[i][x2][p2];
        if (p[x1][j][p2]>r) r=p[x1][j][p2];
        if (p[x1][x2][p2]>r)r=p[x1][x2][p2];
    fout<<r<<"\n";
  }
 fin.close(); fout.close();
}