Pagini recente » Cod sursa (job #3243522) | Cod sursa (job #1346059) | Cod sursa (job #1308823) | Cod sursa (job #3221964) | Cod sursa (job #2727178)
#include <fstream>
#include <cstdlib>
#define NMax 100001
int main()
{
std::ifstream f("branza.in");
int N, S, T, P, Cost;
int Deq[NMax], Costuri[NMax];
int Front = 0, Back = 0;
f >> N >> S >> T;
f >> Costuri[0] >> P;
Cost = Costuri[0] * P;
Deq[0] = 0;
for(int i = 1; i < N; ++i)
{
f >> Costuri[i] >> P;
while(Front <= Back && Costuri[i] <= Costuri[Deq[Back]] + (i - Deq[Back]) * S)
--Back;
Deq[++Back] = i;
if(i - Deq[Front] > T)
++Front;
Cost += Costuri[Deq[Front]] * P + (i - Deq[Front]) * S * P;
}
std::ofstream g("branza.out");
g << Cost;
return 0;
}