Pagini recente » Cod sursa (job #500753) | Cod sursa (job #2566119) | Cod sursa (job #122897) | Cod sursa (job #2194233) | Cod sursa (job #464607)
Cod sursa(job #464607)
#include <cstdio>
#include <algorithm>
using namespace std;
struct nod
{
int p;
int t;
} x[2003];
int cmp (const nod a,const nod b)
{
return a.t<=b.t;
}
int main()
{
int j,n,i;
long long maxdr,maxst,max=0,c;
freopen("carnati.in","r",stdin);
scanf("%d %lld",&n,&c);
for (i=1;i<=n;++i) scanf("%d %d",&x[i].t,&x[i].p);
sort(x+1,x+n+1,cmp);
for (i=1;i<=n;++i)
{
int mx=x[i].p-c,nr=0;
maxst=maxdr=0;
for (j=i-1;j>0;--j)
if (x[j].p>=x[i].p)
{++nr;
if (nr*x[i].p-(x[i].t-x[j].t)*c>maxst) maxst=nr*x[i].p-(x[i].t-x[j].t)*c;
}
nr=0;
for (j=i+1;j<=n;++j)
if (x[j].p>=x[i].p)
{++nr;
if (nr*x[i].p-(x[j].t-x[i].t)*c>maxdr) maxdr=nr*x[i].p-(x[j].t-x[i].t)*c;
}
if (mx+maxst+maxdr>max) max=mx+maxst+maxdr;
}
freopen("carnati.out","w",stdout);
printf("%lld",max);
return 0;}