Cod sursa(job #599568)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 29 iunie 2011 09:07:11
Problema Carnati Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
# include <fstream>
# include <algorithm>
using namespace std;

ifstream f ("carnati.in");
ofstream g ("carnati.out");

struct stu { int i, j; } a[2010];

int n, c, i, j, sol, v[2010];

inline bool cmp (stu a, stu b)
{
	return a.i < b.i;
}

int main ()
{
	f >> n >> c;
	for (i = 1; i <= n; ++i)
		f >> a[i].i >> a[i].j;
	
	sort (a + 1, a + n + 1, cmp);
	
	for (i = 1; i <= n; ++i)
	{
		for (j = 1; j <= n; ++j)
		{
			if (a[j].j >= a[i].j)
				v[j] = max (v[j - 1] - (a[j].i - a[j - 1].i) * c + a[i].j, a[i].j - c);
			else
				v[j] = max (v[j - 1] - (a[j].i - a[j - 1].i) * c, -c);
			if (sol < v[j]) sol = v[j];
		}
		
		//sol = max (sol, v[n]);
	}
	
	g << sol << '\n';
	
	g.close ();
	return 0;
}