Pagini recente » Cod sursa (job #1765853) | Cod sursa (job #615043) | Cod sursa (job #1730791) | Cod sursa (job #1755690) | Cod sursa (job #2655192)
#include <fstream>
#include <algorithm>
using namespace std;
const int NMAX = 2000;
const int TMAX = 1500;
pair <int, int> v[1 + NMAX + 1];
int p[1 + TMAX];
bool functie(const pair<int, int> &a, const pair<int, int> &b)
{
return a.first < b.first;
}
int main()
{
ifstream in("carnati.in");
ofstream out("carnati.out");
int n, c;
int maxim = 0;
in >> n >> c;
for (int i = 1; i <= n; i++)
{
in >> v[i].first >> v[i].second;
}
sort(v + 1, v + 1 + n, functie);
v[n + 1].first = -1;
int t_max = v[n].first;
for (int i = 1; i <= n; ++i)
{
int pret_fixat = v[i].second;
for (int j = 0, k = 1; j <= t_max; j++)
{
p[j] = p[j - 1] - c;
while (v[k].first == j)
{
if (v[k].second >= pret_fixat)
{
p[j] += pret_fixat;
}
k++;
}
}
int minim = p[0];
for (int j = 0; j <= t_max; j++)
{
if (minim > p[j])
{
minim = p[j];
}
if (maxim < p[j] - minim)
{
maxim = p[j] - minim;
}
}
}
out << maxim << '\n';
return 0;
}