Pagini recente » Cod sursa (job #1863583) | Cod sursa (job #1217969) | Cod sursa (job #532936) | Cod sursa (job #359627) | Cod sursa (job #139249)
Cod sursa(job #139249)
#include<stdio.h>
long int c,t[2005],p[2005],aux,pc,v,tv,cav,pv,pa,p1,p2,ps,n,i,j;
void hd(long int ic,long int nc);
void sh(long int i1,long int i2);
int main()
{
FILE *f,*g;f=fopen("carnati.in","r");g=fopen("carnati.out","w");
fscanf(f,"%ld%ld",&n,&c);
for(i=1;i<=n;i++)fscanf(f,"%ld%ld",&t[i],&p[i]);
for(i=n/2;i>=1;i--)hd(i,n);
for(i=n;i>=1;i--){sh(1,i);hd(1,i-1);}
for(i=1;i<=n;i++)
{ pc=p[i];pv=0;
for(j=1;j<=n;j++)
{ v=0;tv=t[j-1];
if(p[j]>=pc)v+=pc;
while(t[j]==t[j+1]){j++;if(p[j]>=pc)v+=pc;}
cav=(t[j]-tv)*c;
p1=pv+v-cav;
p2=v-c;
pa=(p1>p2)?p1:p2;
ps=(ps>pa)?ps:pa;
pv=pa;
}
}
fprintf(g,"%ld\n",ps);
fcloseall();
return 0;
}
void hd(long int ic,long int nc)
{
long int is,is1;
is=2*ic;is1=is+1;
if(is>nc)return;
if(is<nc)if(t[is1]>t[is])is=is1;
if(t[is]>t[ic]){sh(is,ic);hd(is,nc);}
}
void sh(long int i1,long int i2)
{
aux=t[i1];t[i1]=t[i2];t[i2]=aux;
aux=p[i1];p[i1]=p[i2];p[i2]=aux;
}