Pagini recente » Cod sursa (job #770751) | Cod sursa (job #389769) | Rating Lazaroae Andrei (andreilaz) | Cod sursa (job #552687) | Cod sursa (job #2072231)
#include <cstdio>
#include <algorithm>
using namespace std;
pair <int,int> v[2001];
int profit (int x,int pret){
if (x<pret)
return 0;
else return pret;
}
int main()
{
FILE *fin=fopen ("carnati.in","r");
FILE *fout=fopen ("carnati.out","w");
int n,i,j,pret,ok;
long long maxi,sc,c;
fscanf (fin,"%d%lld",&n,&c);
for (i=1;i<=n;i++)
fscanf (fin,"%d%d",&v[i].first,&v[i].second);
sort (v+1,v+n+1);
maxi=0;
for (i=1;i<=n;i++){
pret=v[i].second;
sc=profit (v[1].second,pret)-c;
maxi=max(maxi,sc);
for (j=2;j<=n;j++){
if (sc-(v[j].first-v[j-1].first)*c+profit (v[j].second,pret) >= profit (v[j].second,pret)-c)
sc=sc-(v[j].first-v[j-1].first)*c+profit (v[j].second,pret);
else
sc=profit (v[j].second,pret)-c;
maxi=max(maxi,sc);
}
}
fprintf (fout,"%lld",maxi);
return 0;
}