Pagini recente » Cod sursa (job #1645824) | Cod sursa (job #2093912) | Cod sursa (job #2299796) | Cod sursa (job #2240096) | Cod sursa (job #599575)
Cod sursa(job #599575)
#include <cstring>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
int N, C;
int money[2002], maxtime;
vector<int> V[1502];
int maxS[1502];
int result;
int main()
{
ifstream fin("carnati.in");
ofstream fout("carnati.out");
fin >> N >> C;
for (int i = 1, time; i <= N; ++i)
{
fin >> time >> money[i];
maxtime = max(maxtime, time);
V[time].push_back(money[i]);
}
for (int i = 1; i <= N; ++i) // daca pretul este i
{
memset(maxS, 0, sizeof(maxS));
for (int j = 0; j <= maxtime; ++j)
{
int add = 0;
for (vector<int>::iterator it = V[j].begin(); it != V[j].end(); ++it)
if (*it >= money[i])
add += money[i];
if (j == 0) maxS[j] = add - C;
else maxS[j] = max(add - C, maxS[j - 1] + add - C);
result = max(result, maxS[j]);
}
}
fout << result;
fin.close();
fout.close();
}