Pagini recente » Cod sursa (job #2468120) | Cod sursa (job #1415551) | Cod sursa (job #3164688) | Cod sursa (job #1225273) | Cod sursa (job #2727182)
#include <fstream>
#define NMax 100001
int main()
{
std::ifstream f("branza.in");
long long N, S, T, P;
long long Cost, Costuri[NMax];
long long Deq[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;
}