Pagini recente » Cod sursa (job #98864) | Cod sursa (job #624698) | Concursuri organizate de infoarena | Cod sursa (job #1510698) | Cod sursa (job #1777852)
#include <cstdio>
#include <algorithm>
#define INF 1<<30
#define NMax 2000
#define mp make_pair
#define MAX(a,b)((a)>(b)?(a):(b))
using namespace std;
pair<int, int> v[NMax+1];
int dp[NMax+1];
int main(){
freopen("carnati.in","r",stdin);
freopen("carnati.out","w",stdout);
int i,j,N,C,T,x,y,temp,val,ans=-INF;
scanf("%d %d",&N,&C);
for(i = 1; i <= N; ++i)
{
scanf("%d %d",&x,&y);
v[i] = mp(x,y);
}
sort(v+1,v+N+1);
v[0].first = v[1].first - 1;
for(i = 1; i <= N; ++i)
for(j = 1; j <= N; ++j)
{
val = ( v[j].second >= v[i].second ? v[i].second : 0 );
dp[j] = MAX( dp[j-1] - ( v[j].first - v[j-1].first ) * C + val, val - C );
if( ans < dp[j] ) ans = dp[j];
}
printf("%d\n", ans);
return 0;
}