Pagini recente » Clasament dupa rating | Cod sursa (job #2078043) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #1774583)
#include <stdio.h>
#define INF 2000000000
struct client
{
int t,b;
}v[2001];
inline void interschimb(int *a,int *b)
{
int aux=*a;
*a=*b;*b=aux;
}
void myqsort(int start,int stop)
{
int i,j,pivot;
i=start;j=stop;
pivot=v[(i+j)/2].t;
while(i<=j)
{
while(v[i].t<pivot)
i++;
while(v[j].t>pivot)
j--;
if(i<=j)
{
interschimb(&v[i].t,&v[j].t);
interschimb(&v[i].b,&v[j].b);
i++;j--;
}
}
if(j>start)
myqsort(start,j);
if(i<stop)
myqsort(i,stop);
}
int main()
{
FILE *fin,*fout;
fin=fopen("carnati.in","r");
fout=fopen("carnati.out","w");
int n,c,i,max,pret,sc,j;
fscanf(fin,"%d%d",&n,&c);
for(i=1;i<=n;i++)
fscanf(fin,"%d%d",&v[i].t,&v[i].b);
myqsort(1,n);
v[0].t=v[1].t-1;max=-INF;
for(i=1;i<=n;i++)
{
pret=v[i].b;
sc=0;
for(j=1;j<=n;j++)
{
if(pret<=v[j].b)
{
if(sc<(v[j].t-v[j-1].t-1)*c)
sc=pret-c;
else
sc+=pret-(v[j].t-v[j-1].t)*c;
}
else
sc-=(v[j].t-v[j-1].t)*c;
if(sc>max)
max=sc;
}
}
fprintf(fout,"%d",max);
fclose(fin);
fclose(fout);
return 0;
}