Pagini recente » Cod sursa (job #838750) | Cod sursa (job #2439813) | Cod sursa (job #1861774) | Cod sursa (job #2053955) | Cod sursa (job #158593)
Cod sursa(job #158593)
#include<stdio.h>
#include<algorithm>
using namespace std;
pair <int, int> nr[2010];
inline int max(int a,int b){
return a>b?a:b;
}
int main(){
freopen("carnati.in","r",stdin);
freopen("carnati.out","w",stdout);
int n,c,maxim,i,j,sum,sf;
scanf("%d%d",&n,&c);
for(i=0;i<n;++i)
scanf("%d%d",&nr[i].first,&nr[i].second);
maxim=-1000000000;
sort(nr,nr+n);
for(i=0;i<n;++i){
sum=0;
if(nr[i].second<=nr[0].second){
sum=nr[i].second-c;
sf=nr[0].first;
}
else
sf=nr[1].first-1;
if(sum>maxim)
maxim=sum;
for(j=1;j<n;++j){
if(nr[i].second<=nr[j].second)
sum=max(sum+nr[i].second-(nr[j].first-sf)*c,nr[i].second-c);
else
sum-=(nr[j].first-sf)*c;
sf=nr[j].first;
if(sum>maxim)
maxim=sum;
if(sum<0){
sum=0;
sf=nr[j+1].first-1;
}
}
}
if(maxim<0)
printf("0\n");
else
printf("%d\n",maxim);
fclose(stdin);
fclose(stdout);
return 0;
}