Cod sursa(job #2563857)

Utilizator valentinchipuc123Valentin Chipuc valentinchipuc123 Data 1 martie 2020 15:25:44
Problema Plantatie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

ifstream f("plantie.in");
ofstream g("plantie.out");
int n,a[505][505],q,l,c,lung,rmq[505][505][10],lg[505],puteri[10],dif,ln;

int main()
{
f>>n>>q;
for(int i=1;i<=n;i++)
  for(int j=1;j<=n;j++)
   {
    f>>a[i][j];
    rmq[i][j][0]=a[i][j];
   }
lg[1]=0;
for(int i=2;i<=n;i++)
 lg[i]=lg[i/2]+1;
puteri[0]=1;
for(int i=1;i<=lg[n];i++)
  puteri[i]=puteri[i-1]*2;
for(int z=1;z<=lg[n];z++)
 {
  for(int i=1;i+puteri[z]-1<=n;i++)
    for(int j=1;j+puteri[z]-1<=n;j++)
      rmq[i][j][z]=max(max(rmq[i][j][z-1],rmq[i+puteri[z-1]][j][z-1]),max(rmq[i][j+puteri[z-1]][z-1],rmq[i+puteri[z-1]][j+puteri[z-1]][z-1]));
 }
for(int i=1;i<=q;i++)
  {
   f>>l>>c>>lung;
   ln=lg[lung];
   g<<max(max(rmq[l][c][ln],rmq[l+lung-puteri[ln]][c+lung-puteri[ln]][ln]),max(rmq[l][c+lung-puteri[ln]][ln],rmq[l+lung-puteri[ln]][c][ln]))<<endl;
  }
}