Cod sursa(job #2563882)

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

ifstream f("plantatie.in");
ofstream g("plantatie.out");
int n,a[505][505],q,l,c,lung,rmq[10][505][505],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[0][i][j]=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[z][i][j]=max(max(rmq[z-1][i][j],rmq[z-1][i][j+puteri[z-1]]),max(rmq[z-1][i+puteri[z-1]][j],rmq[z-1][i+puteri[z-1]][j+puteri[z-1]]));
 }
for(int i=1;i<=q;i++)
  {
   f>>l>>c>>lung;
   ln=lg[lung];
   g<<max(max(rmq[ln][l][c],rmq[ln][l+lung-puteri[ln]][c+lung-puteri[ln]]),max(rmq[ln][l][c+lung-puteri[ln]],rmq[ln][l+lung-puteri[ln]][c+lung-puteri[ln]]))<<endl;
  }
}