Pagini recente » Cod sursa (job #2814441) | Cod sursa (job #482234) | Cod sursa (job #548325) | Cod sursa (job #3189575) | Cod sursa (job #3270474)
#include <bits/stdc++.h>
using namespace std;
const int N_MAX = 1e5 + 1;
int N, S, T, P;
int C[N_MAX];
void SetInput(string name)
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
(void)!freopen((name + ".in").c_str(), "r", stdin);
(void)!freopen((name + ".out").c_str(), "w", stdout);
}
void Solve()
{
int sol = 0;
deque<int> dq; /// OBS: dq este ordonat descrecator, iar dq.front() reprez cea mai mica suma curenta de platit per branza
cin >> N >> S >> T;
for(int i = 0, j; i < N; i++)
{
cin >> C[i] >> P;
while(not dq.empty())
{
j = dq.back();
if(C[j] + (i - j) * S > C[i])
dq.pop_back();
else
break;
}
dq.push_back(i);
j = dq.front();
sol += P * (C[j] + (i - j) * S);
}
cout << sol;
}
int main()
{
SetInput("branza");
Solve();
return 0;
}