Pagini recente » Cod sursa (job #311816) | Cod sursa (job #1638749) | Cod sursa (job #1497282) | Cod sursa (job #1710332) | Cod sursa (job #1792066)
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
struct g
{
int p,c;
}v[2001];
bool comp(g a,g b)
{
return a.p<b.p;
}
long long max(long long a,long long b)
{
if(a>b) return a;
return b;
}
int main()
{
int i,n,k,j;
long long sc,scmax,nr,x,max;
freopen("carnati.in","r",stdin);
freopen("carnati.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1; i<=n; i++)
scanf("%d%d",&v[i].p,&v[i].c);
sort(v+1,v+n+1,comp);
max=0;
for(i=1; i<=n; i++){
sc=0;
scmax=0;
nr=0;
x=0;
for(j=i-1; j>0; j--){
nr+=(v[i].c<=v[j].c);
sc=v[i].c*nr-(v[i].p-v[j].p)*k;
if(scmax<sc)
scmax=sc;
}
if(i!=1)
x+=scmax;
sc=0;
scmax=0;
nr=0;
for(j=i+1; j<=n; j++){
nr+=(v[i].c<=v[j].c);
sc=v[i].c*nr-(v[j].p-v[i].p)*k;
if(scmax<sc)
scmax=sc;
}
if(i!=n)
x+=scmax;
x+=v[i].c-k;
if(x>max)
max=x;
}
printf("%lld\n",max);
return 0;
}