Cod sursa(job #1141092)

Utilizator NistorSergiuNistor Sergiu NistorSergiu Data 12 martie 2014 16:50:49
Problema Plantatie Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>
#include<algorithm>
using namespace std;
long long prod[501][501][10];
int main()
{
	int n,m;
	int ii,i,j,k;
	int p;
	ifstream f("plantatie.in");
	f>>n>>m;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
		{
			f>>prod[i][j][0];
		}
	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++)
				prod[i][j][k]=max(max(prod[i][j][k-1],prod[i+(1<<(k-1))][j][k-1]),max(prod[i][j+(1<<(k-1))][k-1],prod[i+(1<<(k-1))][j+(1<<(k-1))][k-1]));
	ofstream g("plantatie.out");
	for(ii=1;ii<=m;ii++)
	{
		f>>i>>j>>k;
		for(p=0;(1<<p)<=k;p++);
		p--;
		g<<max(max(prod[i][j][p],prod[i+k-(1<<p)][j][p]),max(prod[i][j+k-(1<<p)][p],prod[i+k-(1<<p)][j+k-(1<<p)][p]))<<'\n';
	}
	f.close();
	g.close();
	return 0;
}