Pagini recente » Diferente pentru home intre reviziile 666 si 665 | Diferente pentru home intre reviziile 588 si 589 | Istoria paginii utilizator/ursu0406 | Monitorul de evaluare | Cod sursa (job #997656)
Cod sursa(job #997656)
#include <cstdio>
#include <algorithm>
#define N 2002
using namespace std;
struct nr
{
int t, p;
bool operator < (const nr &e) const
{
return t<e.t;
}
};
nr a[N];
int dp[N];
int main()
{
freopen("carnati.in", "r", stdin);
freopen("carnati.out", "w", stdout);
int n, k, i, j, cost, sol=0;
scanf("%d %d ", &n, &k);
for(i=1;i<=n;i++)
{
scanf("%d %d ", &a[i].t, &a[i].p);
}
sort(a+1, a+n+1);
for(i=1;i<=n;i++)
{
cost=a[i].p;
dp[n]=-k;
if(a[n].p>=cost) dp[n]+=cost;
sol=max(sol, dp[n]);
for(j=n-1;j;j--)
{
dp[j]=max(-k, dp[j+1]-k*(a[j+1].t-a[j].t));
if(a[j].p>=cost) dp[j]+=cost;
sol=max(sol, dp[j]);
}
}
printf("%d", sol);
}