Pagini recente » Cod sursa (job #1909479) | Cod sursa (job #1678640) | Cod sursa (job #1173854) | Cod sursa (job #1919251) | Cod sursa (job #326271)
Cod sursa(job #326271)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define MAX_N 2048
#define inf 2147000000
int n, m, c, sol = -inf;
struct customer {
int t;
int c;
} V[MAX_N];
int A[MAX_N];
inline int cmp(customer P, customer Q) {
return P.t < Q.t;
}
void cit() {
freopen("carnati.in", "r", stdin);
freopen("carnati.out", "w", stdout);
scanf("%d %d", &n, &c);
for (int i = 1; i <= n; i++)
scanf("%d %d", &V[i].t, &V[i].c);
sort(V + 1, V + n + 1, cmp);
}
void ssm() {
int sum = 0;
for (int i = 1; i <= m; i++) {
sum += A[i];
if (sum > sol) sol = sum;
if (sum < 0) sum = 0;
}
}
void solve() {
//fixez pretul carnatilor pe rand pretul fiecarui carnat
for (int i = 1; i <= n; i++) { //carnatii vor avea pretul V[i].t
m = 0;
int j = 1;
while (j <= n) {
int k = j;
while (V[k].t == V[k + 1].t && k < n)
k++;
A[++m] = -c;
for (int ind = j; ind <= k; ind++)
if (V[ind].c >= V[i].c)
A[m] += V[i].c;
if (k < n)
A[++m] = -(V[k + 1].t - V[k].t - 1) * c;
j = k + 1;
}
ssm();
}
printf("%d\n", sol);
}
int main() {
cit();
solve();
return 0;
}