Pagini recente » Cod sursa (job #1719793) | Cod sursa (job #3125612) | Cod sursa (job #1732113) | Cod sursa (job #1302841) | Cod sursa (job #2888761)
#include <iostream>
#include <deque>
#include <fstream>
using namespace std;
ifstream fin("branza.in");
ofstream fout("branza.out");
int main()
{
int N, T, S, pret, cantitate;
fin >> N >> S >> T;
deque<pair<int, int>>deck;
int suma = 0;
for (int i = 1; i <= N; ++i)
{
fin >> pret >> cantitate;
while (!deck.empty() && deck.back().first + (i - deck.back().second) * S > pret)
deck.pop_back();
deck.push_back(make_pair(pret, i));
while (deck.front().second + T < i)
{
deck.pop_front();
}
if (!deck.empty())
{
suma += (deck.front().first + (i - deck.front().second) * S) * cantitate;
//cout << (deck.front().first + (i - deck.front().second) * S) * cantitate << endl;
}
}
fout << suma;
}