Pagini recente » Cod sursa (job #2197808) | Cod sursa (job #2824667) | Cod sursa (job #1986970) | Cod sursa (job #1124027) | Cod sursa (job #3288701)
#include <bits/stdc++.h>
using namespace std;
int main()
{
ifstream cin("branza.in");
ofstream cout("branza.out");
int n, s, t;
cin >> n >> s >> t;
long long cost_minim=0; //costul minim necesar cerut de problema
deque<pair<int, int>> minime; //deque cu indicii saptamanilor cu costul minim pe prima pozitie si aceste costuri pe a doua pozitie
for(int i=0; i<n; i++)
{
int c, p;
cin >> c >> p;
while(!minime.empty() && (minime.back().second)+(i-minime.back().first)*s>=c)
{
minime.pop_back();
}
pair<int, int> cost; //costul din saptamana i
cost.first=i; cost.second=c;
minime.push_back(cost);
if(minime.front().first<i-t)
{
minime.pop_front();
}
cost_minim+=(minime.front().second+(i-minime.front().first)*s)*p;
}
cout << cost_minim;
return 0;
}