Cod sursa(job #484294)

Utilizator zloteanu.adrianzloteanu adrian nichita zloteanu.adrian Data 13 septembrie 2010 14:52:25
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<fstream>
using namespace std;
ifstream q("plantatie.in");
ofstream w("plantatie.out");
int n,m;
int rmq[10][501][501];
int lg[501];
int main()
{int i,j,k,t,l;
q>>n>>m;
for(i=1;i<=n;i++)
  for(j=1;j<=n;j++)
	q>>rmq[0][i][j];
for(i=2;i<=n;i++)
  lg[i]=lg[i/2]+1;
for(k=1;k<=lg[n];k++)
  {t=1<<k;
  for(i=1;i+t-1<=n;i++)
	for(j=1;j+t-1<=n;j++)
	  {rmq[k][i][j]=max(rmq[k-1][i][j],rmq[k-1][i+t/2][j]);
      rmq[k][i][j]=max(rmq[k][i][j],rmq[k-1][i][j+t/2]);
	  rmq[k][i][j]=max(rmq[k][i][j],rmq[k-1][i+t/2][j+t/2]);}}
while(m--)
   {q>>i>>j>>l;
   k=lg[l];
   t=max(rmq[k][i][j],rmq[k][i+l-(1<<k)][j]);
   t=max(t,rmq[k][i][j+l-(1<<k)]);
   t=max(t,rmq[k][i+l-(1<<k)][j+l-(1<<k)]);
   w<<t<<'\n';}
return 0;}