Cod sursa(job #1355784)

Utilizator andrei_diaconuAndrei Diaconu andrei_diaconu Data 22 februarie 2015 23:02:06
Problema Plantatie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
#define NMax 505
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int n, m, rmq[NMax][NMax][15], lg, x, y, l;
int getmax(int a, int b)
{
	if (a > b)
		return a;
	return b;
}
int main()
{
	f >> n >> m;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			f >> rmq[i][j][0];
	for (int i = 1; i <= n; i *= 2, lg++);
	lg--;
	for (int k = 1; k <= lg; k++) {
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= n; j++) {
				rmq[i][j][k] = getmax(rmq[i][j][k - 1], 
								getmax(rmq[i + (1 << (k - 1))][j][k - 1], 
								 getmax(rmq[i][j + (1 << (k - 1))][k - 1], 
								        rmq[i + (1 << (k - 1))][j + (1 << (k - 1))][k - 1])));
			}
		}
	}
	/*for (int i = 1; i <= m; i++) {
		f >> x >> y >> l;
		for (int i = 1, lg = 0; i <= l; i *= 2, lg++);
		lg--;
		g << getmax(rmq[x][y][lg],
			  getmax(rmq[x + l - (1 << lg)][y][lg],
			   getmax(rmq[x][y + l - (1 << lg)][lg],
				      rmq[x + l - (1 << lg)][y + l - (1 << lg)][lg]))) << "\n";
	}*/
}