Cod sursa(job #2860769)

Utilizator darisavuSavu Daria darisavu Data 3 martie 2022 08:45:48
Problema Plantatie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int d[505][505][15],n,x,y,m,col,lin,lg,sol;
int mx(int a,int b,int c,int d)
{
    int mx=a;
    if(b>mx) mx=b;
    if(c>mx) mx=c;
    if(d>mx) mx=d;
}
int main()
{
    int i,j,l;
    f>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++) f>>d[i][j][0];
   for(l=1;(1<<l)<=n;l++)
    for(i=1;i+(1<<(l-1))<=n;i++)
    for(j=1;j+(1<<(l-1))<=n;j++)
   {
       d[i][j][l]=mx(d[i][j][l-1],d[i][j+(1<<(l-1))][l-1],d[i+(1<<(l-1))][j][l-1],d[i+(1<<(l-1))][j+(1<<(l-1))][l-1]);
   }
   for(i=1;i<=m;i++)
   {
       f>>x>>y>>l;
       lg=log2(l);
       col=y+l-1;
       lin=x+l-1;
       sol=mx(d[x][y][lg],d[x][col-(1<<lg)+1][lg],d[lin-(1<<lg)+1][y][lg],d[lin-(1<<lg)+1][col-(1<<lg)+1][lg]);
       g<<sol<<'\n';

   }
    return 0;
}