Pagini recente » Cod sursa (job #1207346) | Cod sursa (job #1733203) | Cod sursa (job #1108408) | Cod sursa (job #3128197) | Cod sursa (job #1915881)
#include <bits/stdc++.h>
using namespace std;
ifstream fi("carnati.in");
ofstream fo("carnati.out");
using i64 = long long;
const int NMAX = 2048;
struct Man {
int t, p; };
int n, c;
i64 ant, s;
Man v[NMAX];
i64 ssm[NMAX];
int main() {
int mn = 1e9, mx = -1e9;
ant = 0;
fi >> n >> c;
for (int i = 0; i < n; ++i) {
fi >> v[i].t >> v[i].p;
mn = min(v[i].t, mn);
mx = max(v[i].t, mx); }
sort(v, v + n, [](const Man &a, const Man &b) { return a.p < b.p; });
for (int i = 0; i < n; ++i) {
if (i > 0 && v[i].p == v[i - 1].p)
continue;
memset(ssm, 0x00, sizeof ssm);
for (int j = mn; j <= mx; ++j)
ssm[j] = -c;
for (int j = n - 1; j > 0 && v[j].p >= v[i].p; --j)
ssm[v[j].t]+= v[i].p;
s = 0;
for (int j = mn; j <= mx; ++j) {
s = max(0LL, s + ssm[j]);
ant = max(ant, s); } }
fo << ant << '\n';
return 0; }