Pagini recente » Cod sursa (job #2813134) | Cod sursa (job #1133706) | Cod sursa (job #1133797) | Cod sursa (job #192499) | Cod sursa (job #2097964)
#include <fstream>
#include <set>
#include <algorithm>
#define VAL 2005
using namespace std;
ifstream fin("carnati.in");
ofstream fout("carnati.out");
struct customer
{
int t, p;
};
customer v[VAL];
int N, C, i, j, last;
int ANS, dp[VAL];
set <int> P;
set <int> :: iterator it;
bool cmp(customer A, customer B)
{
return A.t<B.t;
}
int main()
{
fin >> N >> C;
for (i=1; i<=N; i++)
{
fin >> v[i].t >> v[i].p;
P.insert(v[i].p);
}
sort(v+1, v+N+1, cmp);
for (it=P.begin(); it!=P.end(); it++)
{
for (i=1; i<=N; i++)
dp[i]=0;
last=0;
for (i=1; i<=N; i++)
{
if (v[i].p>=*it)
{
if (last==0)
dp[i]=*it-C;
else
dp[i]=max(*it-C, dp[last]+*it-C*(v[i].t-v[last].t));
last=i;
ANS=max(ANS, dp[i]);
}
}
}
fout << ANS << '\n';
fin.close();
fout.close();
return 0;
}