Pagini recente » Cod sursa (job #436923) | Cod sursa (job #566511) | Cod sursa (job #1430811) | Cod sursa (job #1803541) | Cod sursa (job #920235)
Cod sursa(job #920235)
#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;
}