Pagini recente » Cod sursa (job #414031) | Cod sursa (job #3262465) | Cod sursa (job #2977286) | Cod sursa (job #1429684) | Cod sursa (job #2761820)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
int numar_saptamani, cantitate;
int numar_saptamani_expirare, unitati_monetare;
int cost_minim, cost[100001];
deque <int> costuri;
int main()
{
ifstream fin("branza.in");
ofstream fout("branza.out");
fin >>numar_saptamani >> unitati_monetare;
fin >> numar_saptamani_expirare;
numar_saptamani_expirare++;
for(int i = 0; i < numar_saptamani; i++)
{
fin >> cost[i] >> cantitate;
while(costuri.empty() == 0 && cost[costuri.back()] + unitati_monetare * (i - costuri.back()) >= cost[i])
costuri.pop_back();
costuri.push_back(i);
if(costuri.empty() == 0 && costuri.front() == i - numar_saptamani_expirare)
costuri.pop_front();
cost_minim += cantitate * (cost[costuri.front()] + unitati_monetare * (i - costuri.front()));
}
fout << cost_minim;
return 0;
}