Pagini recente » Clasament lk | Cod sursa (job #3239301) | Cod sursa (job #1251493) | Cod sursa (job #832636) | Cod sursa (job #2504339)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("carnati.in");
ofstream fout("carnati.out");
const int NMAX = 2000;
const int TMAX = 1500;
int N, C;
pair <int, int> clients[NMAX + 5];
vector < int > prices;
int cost[TMAX + 5];
int minSt[TMAX + 5], ans;
void SolveFor(int minPrice)
{
for(int i = 0; i <= TMAX; i++)
cost[i] = -C;
for(int i = 1; i <= N; i++)
if(clients[i].second >= minPrice)
cost[clients[i].first] += minPrice;
for(int i = 1; i <= TMAX; i++)
cost[i] += cost[i - 1];
ans = max(ans, cost[0]);
minSt[0] = min(0, cost[0]);
for(int i = 1; i <= TMAX; i++)
{
ans = max(ans, cost[i] - minSt[i - 1]);
minSt[i] = min(minSt[i - 1], cost[i]);
}
}
int main()
{
fin >> N >> C;
for(int i = 1; i <= N; i++)
{
fin >> clients[i].first >> clients[i].second;
prices.push_back(clients[i].second);
}
for(auto it : prices)
SolveFor(it);
fout << ans << '\n';
return 0;
}