Pagini recente » Cod sursa (job #1811602) | Cod sursa (job #30272) | Cod sursa (job #285137) | Cod sursa (job #2171320) | Cod sursa (job #223423)
Cod sursa(job #223423)
#include <cstdio>
#include <algorithm>
using namespace std;
#define MAX_N 2005
struct client{int t, p;} V[MAX_N];
int N, C;
long Bst[MAX_N], Max, M;
void citire()
{
scanf("%d %d",&N, &C);
for(int i = 1; i <= N; ++i)
scanf("%d %d",&V[i].t, &V[i].p);
}
struct cmp
{
bool operator()(const client a, const client b) const
{
return(a.t < b.t);
}
};
void solve()
{
sort(V+1, V+N+1, cmp());
Bst[0] = V[0].t = V[0].p = -10;
for(int i = 1; i <= N; ++i)
{
int X = V[i].p, lst = 0;
for(int i = 1; i <= N; ++i)
{
if(V[i].p < X) {Bst[i] = 0; continue;}
Bst[i] = X - C;
long k = Bst[lst] + X - C*(V[i].t - V[lst].t);
if(k > Bst[i])
Bst[i] = k, lst = i;
else
lst = i;
if(Bst[i] > Max)
Max = Bst[i];
}
}
printf("%ld\n", Max);
}
int main()
{
freopen("carnati.in","rt",stdin);
freopen("carnati.out","wt",stdout);
citire();
solve();
}