Cod sursa(job #2152504)

Utilizator Lazar_LaurentiuLazar Laurentiu Lazar_Laurentiu Data 5 martie 2018 16:49:47
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
#define MAX 510

using namespace std;

int n,m,x,y,x2,y2,k,pt,i2,j2;
int p[MAX][MAX][9];

int main()
{
    ifstream f ("plantatie.in");
    ofstream g ("plantatie.out");
    f>>n>>m;
    for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) f>>p[i][j][0];
    for(int sp=1;sp<=8;sp++){
      for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++){
          i2=min(n,i+(1<<(sp-1)));
          j2=min(n,j+(1<<(sp-1)));
          p[i][j][sp]=max(p[i][j][sp-1],max(p[i][j2][sp-1],max(p[i2][j][sp-1],p[i2][j2][sp-1])));
        }
    }
    for(int i=1;i<=m;i++){
      f>>x>>y>>k;
      for(pt=0;(1<<pt)<=k;pt++);pt--;
      x2=x+k-(1<<pt);y2=y+k-(1<<pt);
      g<<max(p[x][y][pt],max(p[x][y2][pt],max(p[x2][y][pt],p[x2][y2][pt])))<<'\n';
    }
    f.close();
    g.close();
    return 0;
}