Cod sursa(job #2682727)

Utilizator monica_LMonica monica_L Data 9 decembrie 2020 13:50:43
Problema Plantatie Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#include <algorithm>
#include <math.h>

using namespace std;

FILE*f=fopen("plantatie.in","r");
FILE*g=fopen("plantatie.out","w");

int v[510][510],a[510][510][15];

int main()
{
 int n,q,x,y,j,i,k,l;
 fscanf(f,"%d%d",&n,&q);
 for (i=1;i<=n;i++)
   for (j=1;j<=n;j++)
    {
       fscanf(f,"%d",&v[i][j]);
       a[i][j][0]=v[i][j];
    }

  for (k=1;(1<<k)<=n;k++)
   for (i=1;i-1+(1<<k)<=n;i++)
    for (j=1;j-1+(1<<k)<=n;j++)
     a[i][j][k]=max(max(a[i][j][k-1],a[i+(1<<(k-1))][j+(1<<(k-1))][k-1]),max(a[i][j+(1<<(k-1))][k-1],a[i+(1<<(k-1))][j][k-1]));

  for (i=1;i<=q;i++)
    {
      fscanf(f,"%d%d%d",&x,&y,&l);
      k=log2(l);
      fprintf(g,"%d\n",max(max(a[x][y][k],a[x+l-(1<<k)][y+l-(1<<k)][k]),max(a[x][y+l-(1<<k)][k],a[x+l-(1<<k)][y][k])));
    }
    fclose(f);
    fclose(g);
    return 0;
}