Pagini recente » Cod sursa (job #140411) | Cod sursa (job #124023) | Cod sursa (job #519351) | Cod sursa (job #65105) | Cod sursa (job #537022)
Cod sursa(job #537022)
#include <fstream.h>
#include <algorithm>
#define N 2010
using namespace std;
ifstream fin("carnati.in");
ofstream fout("carnati.out");
struct C{
int t;
int p;
} client[N];
int n,c,best = -int(2e9);
void read(){
int i;
fin>>n>>c;
for (i=1; i<=n; i++)
fin>>client[i].t>>client[i].p;
}
int cmp(C x, C y){
return x.t < y.t;
}
void dinamica(int pFixat){
int i,sum = 0, pi; // pi este pretul de la i. care poate fi chiar pretul clientului sau 0
client[0].t = client[1].t-1;
for (i=1;i<=n;i++){
if (client[i].p >= pFixat) pi = pFixat;
else pi = 0;
if (sum + pi - (client[i].t-client[i-1].t)*c < pi-c)
sum = pi-c;
else
sum += pi - (client[i].t-client[i-1].t)*c;
if (sum > best) best = sum;
}
}
void solve(){
for (int i=1; i<=n; i++)
dinamica(client[i].p);
}
int main(){
read();
sort(client+1,client+n+1,cmp);
solve();
fout<<best;
return 0;
}