Pagini recente » Cod sursa (job #3272382) | Cod sursa (job #420748) | Cod sursa (job #1138483) | Cod sursa (job #1980066) | Cod sursa (job #142724)
Cod sursa(job #142724)
#include <cstdio>
#include <vector>
#include <algorithm>
#define pb push_back
#define mp make_pair
using namespace std;
int N,C,best;
vector < pair<int,int> > v;
int main()
{
int i,j,x,y,sum,a,p;
freopen("carnati.in","r",stdin);
freopen("carnati.out","w",stdout);
scanf("%d%d",&N,&C);
v.pb(mp(-1,0));
for ( i = 1; i <= N; ++i )
scanf("%d%d",&x,&y),v.pb(mp(x,y));
sort(v.begin(),v.end());
best = v[0].second - C;
for ( i = 1; i <= N; ++i )
{
sum = 0; a = 0; p = 0;
for ( j = 1; j <= N; ++j )
{
sum = sum - ( v[j].first - v[j-1].first ) * C + v[i].second * ( ( v[i].second <= v[j].second ) ? (1) : (0) );
if ( p )
best = max(best,sum-a+(v[p+1].first-v[p].first-1)*C);
else
best = max(best,sum);
if ( sum < a )
a = sum,p=j;
}
}
printf("%d\n",best);
return 0;
}