Cod sursa(job #1047932)

Utilizator vlad.florescu94FMI Florescu Vlad - Adrian vlad.florescu94 Data 4 decembrie 2013 23:51:54
Problema Plantatie Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include<fstream>
#include<algorithm>
#include<cmath>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int n,nr,a[501][501],m[501][501][8],i,j,l,k,r,x,y,h;
int maxim(int a,int b,int c, int d)
{
    int bla1,bla2;
    bla1=max(a,b);bla2=max(c,d);
    return max(bla1,bla2);
}
int rmq(int a,int b,int k)
{
   h=log2(k);
   return maxim(m[a][b][h],m[a+h][b][h],m[a][b+h][h],m[a+h][b+h][h]);
}
int main()
{
    f>>n>>nr;
    for(i=0;i<n;i++)
      for(j=0;j<n;j++)
       {
          f>>a[i][j];
          m[i][j][0]=a[i][j];
       }
 //   g<<"TEST: "<<"4 4 : "<<(4+1<<1)<<'\n';
    for(k=1;1<<k<=n;k++)
       for(i=0;i+(1<<k)-1<n;i++)
          for(j=0;j+(1<<k)-1<n;j++)
             m[i][j][k]=maxim(m[i][j][k-1],m[i][j+(1<<(k-1))][k-1],m[i+(1<<(k-1))][j][k-1],m[i+(1<<(k-1))][j+(1<<(k-1))][k-1]);

/*    for(i=0;i<n;i++)
      {  for(j=0;j<n;j++)
            for(k=0;k<=3&&i+(1<<k)-1<n&&j+(1<<k)-1<n;k++)
              g<<a[i][j]<<"{"<<k<<"}"<<"|"<<m[i][j][k]<<"| ";
         g<<'\n';
      }            */
    for(i=1;i<=nr;i++)
    {
       f>>x>>y>>r;
       g<<rmq(x-1,y-1,r)<<'\n';
    }
 //  g<<m[0][0][3]<<" ";
   f.close();g.close();
   return 0;
}