Pagini recente » Cod sursa (job #1616577) | Cod sursa (job #1499522) | Cod sursa (job #2108937) | Cod sursa (job #1063982) | Cod sursa (job #844704)
Cod sursa(job #844704)
#include <stdio.h>
#include <algorithm>
using namespace std;
struct carnat
{
int T, P;
} x[2500];
inline int max(int a, int b)
{
if (a > b)
return a;
return b;
}
inline bool comp(carnat A, carnat B)
{
return A.T < B.T;
}
int solve(int N, int X, int C)
{
int i, best = 0, now = 0;
for (i = 1; i <= N; i ++)
if (x[i].P < X)
now = max(now - (x[i].T - x[i - 1].T) * C, -C);
else
{
int ret = now + X - (x[i].T - x[i - 1].T) * C;
now = X - C;
now = max(ret, now);
//if (now < 0)
// now = 0;
if (now > best)
best = now;
}
return best;
}
int main()
{
int i, N, C;
freopen("carnati.in", "r", stdin);
freopen("carnati.out", "w", stdout);
scanf("%d%d", &N, &C);
for (i = 1; i <= N; i ++)
scanf("%d%d", &x[i].T, &x[i].P);
sort(x + 1, x + N + 1, comp);
int profit = 0;
for (i = 1; i <= N; i ++)
profit = max(profit, solve(N, x[i].P, C));
printf("%d", profit);
return 0;
}