Pagini recente » Istoria paginii utilizator/insanekkt | Istoria paginii utilizator/mirunaafloroaie | Istoria paginii utilizator/sarra_blu | Istoria paginii utilizator/teutsch | Cod sursa (job #1686871)
#include <iostream>
#include <fstream>
using namespace std;
int profitMax[2001];
int pretMin[2001];
int tStart[2001];
int carnati[2001];
int main()
{
ifstream fin("carnati.in");
ofstream fout("carnati.out");
int n, salariu, pmax = 0, t, p, pretNou;
fin >> n >> salariu;
for(int i = 1; i <= n; ++i){
fin >> t >> p;
tStart[i] = t;
pretMin[i] = p;
profitMax[i] = p - salariu;
carnati[i] = 1;
for(int j = i - 1; j >= 1; --j){
pretNou = (p <= pretMin[j]) ? p : pretMin[j];
if(pretNou * (carnati[j] + 1) - salariu * (t - tStart[j] + 1) > profitMax[i]){
profitMax[i] = pretNou * (carnati[j] + 1) - salariu * (t - tStart[j] + 1);
tStart[i] = tStart[j];
carnati[i] =carnati[j] + 1;
}
}
if(profitMax[i] > pmax)
pmax = profitMax[i];
}
fout << pmax;
return 0;
}