Pagini recente » Cod sursa (job #77606) | Cod sursa (job #2166518) | Cod sursa (job #411970) | Cod sursa (job #2064221) | Cod sursa (job #1586777)
#include <bits/stdc++.h>
using namespace std;
const int nmax = 2005;
int N,K,sol,dp[nmax];
struct el{
int t,x;
}a[nmax];
inline bool cmp(const el &A,const el &B){
return A.t < B.t;
}
inline int Ok(int D){
int i,best = 0;
for(i = 1; i <= N; ++i){
if(a[i].x < D) {dp[i] =dp[i-1]-K*(a[i].t-a[i-1].t); continue;}
dp[i] = max(D-K,dp[i-1]+D-K*(a[i].t-a[i-1].t));
best = max(best,dp[i]);
}
memset(dp,0,sizeof(dp));
return best;
}
int main(){
int i;
freopen("carnati.in","r",stdin);
freopen("carnati.out","w",stdout);
scanf("%d %d\n",&N,&K);
for(int i = 1; i <= N; ++i)
scanf("%d %d\n",&a[i].t,&a[i].x);
sort(a+1,a+N+1,cmp);
for(i = 1; i <= N; ++i)
sol = max(sol,Ok(a[i].x));
printf("%d\n",sol);
return 0;
}