Pagini recente » Cod sursa (job #3292797) | Cod sursa (job #599369) | Cod sursa (job #2505206) | Cod sursa (job #2809088) | Cod sursa (job #537014)
Cod sursa(job #537014)
#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 = -(1<<32);
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,client+n,cmp);
solve();
fout<<best;
return 0;
}