Pagini recente » Cod sursa (job #2382345) | Cod sursa (job #637725) | Cod sursa (job #2123692) | Cod sursa (job #1111003) | Cod sursa (job #139169)
Cod sursa(job #139169)
#include<stdio.h>
#include<stdlib.h>
FILE*f=fopen("carnati.in","r");
FILE*g=fopen("carnati.out","w");
typedef struct{
int p,t;
}Client;
int n,c,max,pret;
Client x[2004],a[2002];
int dp[2004];
int cmp(const void*a, const void*b)
{
return x[*(int*)a].t-x[*(int*)b].t;
}
void read()
{
fscanf(f,"%d %d",&n,&c);
int i;
int h[2003];
for(i=1;i<=n;++i)
{
fscanf(f,"%d %d",&x[i].t,&x[i].p);
h[i]=i;
}
qsort(h,n+1,sizeof(int),cmp);
for(i=1;i<=n;++i) a[i]=x[h[i]];
}
void solve()
{
int i,j,G;
for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j)
{
if(a[j].p>=a[i].p) G=a[i].p;
else G=0;
dp[j]=dp[j-1]-(a[j].t-a[j-1].t)*c+G;
if(dp[j]<G-c) dp[j]=G-c;
if(dp[j]>max) max=dp[j];
}
}
}
int main()
{
read();
solve();
fprintf(g,"%d\n",max);
return 0;
}