Cod sursa(job #1538698)

Utilizator gbibBacotiu Gabi gbib Data 29 noiembrie 2015 17:04:35
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("plantatie.in");
ofstream out ("plantatie.out");
int rmq[10][505][505],lg[505];
int main()
{int i,j,n,m,k,x,y,z;
in>>n>>m;
for(i=1;i<=n;i++)
{
    for(j=1;j<=n;j++)
    {
        in>>rmq[0][i][j];
    }
}
for(i=2;i<=n;i++)
    lg[i]=lg[i/2]+1;
for(k=1;(1<<k)<=n;k++)
{
    for(i=1;i+(1<<k)-1<=n;i++)
    {
        for(j=1;j+(1<<k)-1<=n;j++)
        {
            rmq[k][i][j]=max(max(max(rmq[k-1][i][j],rmq[k-1][i][j+(1<<(k-1))]),
            rmq[k-1][i+(1<<(k-1))][j]),rmq[k-1][i+(1<<(k-1))][j+(1<<(k-1))]);
        }
    }
}
for(i=1;i<=m;i++)
{
    in>>x>>y>>z;
    int p;
    p=lg[z];
    out<<max(max(max(rmq[p][x][y],rmq[p][x][y+z-(1<<(p))]),
        rmq[p][x+z-(1<<(p))][y]),rmq[p][x+z-(1<<(p))][y+z-(1<<(p))])<<'\n';

}
    return 0;
}