Cod sursa(job #180300)

Utilizator mihai0110Bivol Mihai mihai0110 Data 16 aprilie 2008 21:03:11
Problema Carnati Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>
#include<algorithm>
#define MAXN 10000

using namespace std;

struct om{int t,p;} v[MAXN];
int i,j,n,c,pr,prmax,max,g,sol=-MAXN;
int a[MAXN];

bool comp(const om &a,const om &b)
{
		 return a.t<b.t;
} 

int main(void)
{
		freopen("carnati.in","r",stdin);
		freopen("carnati.out","w",stdout);
		scanf("%d%d",&n,&c);
		for(i=1;i<=n;i++)
		{
			scanf("%d%d",&v[i].t,&v[i].p);
			if(v[i].p>prmax)
			prmax=v[i].p;
		}
		sort(v+1,v+n+1,comp);
		for(pr=1;pr<=prmax;pr++)
			for(i=1;i<=n;i++)
			{
				if(v[i].p>=pr)
					g=pr;
				else
					g=0;
				a[i]=a[i-1]-(v[i].t-v[i-1].t)*c+g;
				if(g-c>a[i])
					a[i]=g-c;
				if(a[i]>sol)
					sol=a[i];
			}
		printf("%d\n",sol);
		return 0;
}