Cod sursa(job #920235)

Utilizator beldeabogdanBogdan Beldea beldeabogdan Data 20 martie 2013 09:41:18
Problema Carnati Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>
#include <algorithm>
using namespace std;

struct carnat {
	int t,p;
};
carnat v[2005];
int n,c,summax;

bool cmp(carnat a,carnat b) {
	return (a.t < b.t);
}

int maxim(int a,int b,int c) {
	if (a>b && a>c) return a;
	else if (b>a && b>c) return b;
	else return c;
}

int maximcurent(int pret) {
	int pmax=0,profit=0,precedent=-1,p1,p2;
	for (int i=0;i<=n;i++) if (v[i].p >= pret) {
		pmax = maxim(pmax,pret - c,profit - (v[i].t - precedent)*c + pret);
		precedent = v[i].t;
	}
	return pmax;
}

int main() {
	freopen("carnati.in","r",stdin);
	freopen("carnati.out","w",stdout);
	scanf("%d %d",&n,&c);
	for (int i=1;i<=n;i++) scanf("%d %d",&v[i].t,&v[i].p);
	sort(v+1,v+n+1,cmp);
	for (int i=0;i<=n;i++) {
		summax = maxim(summax,maximcurent(v[i].p),-1);
	}
	printf("%d",summax);
	return 0;
}