Pagini recente » Cod sursa (job #3227512) | Cod sursa (job #335132) | Cod sursa (job #1345014) | Cod sursa (job #2337493) | Cod sursa (job #2699092)
#include <stdio.h>
#include <stdlib.h>
#define PMAX 1000000
int o[2000],p[2000],f[PMAX + 1];
void sort(int begin, int end){
int b=begin, e=end, aux, pivot=o[(begin+end)/2];
while(o[b]<pivot)
b++;
while(o[e]>pivot)
e--;
while(b<e){
aux=o[b];
o[b]=o[e];
o[e]=aux;
aux=p[b];
p[b]=p[e];
p[e]=aux;
do{
b++;
} while(o[b]<pivot);
do{
e--;
} while(o[e]>pivot);
}
if(e>begin)
sort(begin,e);
if(e+1<end)
sort(e+1,end);
}
int main(){
int n,i,j,c,max,s;
FILE *fin, *fout;
fin=fopen("carnati.in","r");
fscanf(fin,"%d%d",&n,&c);
for(i=0;i<n;i++){
fscanf(fin,"%d%d",&o[i],&p[i]);
f[p[i]]++;
}
sort(0,n-1);
fclose(fin);
max=0;
for(i=0;i<PMAX;i++){ ///Ciclam prin toate preturile posibile
if(f[i]>0){
s=0;
if(p[0]>=i)
s+=i;
if(s>max)
max=s;
for(j=1;j<n;j++){
s-=c*(o[j]-o[j-1]); ///Scadem intretinerea vanzatorului
///Daca sirul de pana acum a fost profitabli (profitul e pozitiv) mai adaugam la sirul precedent
///Daca nu, pornim un nou sir si resetam s-ul
if(s<0)
s=0;
if(p[j]>=i)
s+=i;
if(s>max)
max=s;
}
}
}
fout=fopen("carnati.out","w");
fprintf(fout,"%d\n",max-c);
fclose(fout);
return 0;
}