Pagini recente » Cod sursa (job #652218) | Cod sursa (job #1025502) | Cod sursa (job #2071948) | Cod sursa (job #2754713) | Cod sursa (job #142729)
Cod sursa(job #142729)
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
#define fin "carnati.in"
#define fout "carnati.out"
const int Nmax = 2010;
int N,C,best,a[Nmax];
vector < pair <int,int> > v;
void readsolve()
{
int i,j,X,x,y,minv,val;
freopen("carnati.in","r",stdin);
freopen("carnati.out","w",stdout);
scanf("%d%d",&N,&C);
minv = 100000000;
for ( i = 1; i <= N; ++i )
{
scanf("%d%d",&x,&y),v.push_back(make_pair(x,y));
if ( x < minv ) minv = x;
}
v.push_back(make_pair(minv-1,0));
sort(v.begin(),v.end());
best = v[1].second - C;
for ( i = 1; i <= N; ++i )
{
X = v[i].second;
memset(a,0,sizeof(a));
for ( j = 1; j <= N; ++j )
{
if ( X <= v[j].second )
val = X;
else
val = 0;
a[j] = max( a[j-1] - ( v[j].first - v[j-1].first ) * C + val,val-C);
best = max(best,a[j]);
}
}
printf("%d\n",best);
}
int main()
{
readsolve();
return 0;
}