Pagini recente » Cod sursa (job #427111) | Cod sursa (job #1422586) | Cod sursa (job #1800323) | Cod sursa (job #74202) | Cod sursa (job #2889598)
#include <bits/stdc++.h>
using namespace std;
ifstream f("branza.in");
ofstream g("branza.out");
int main() {
int nr_saptamani, pr_dep_sapt, max_depozitare, cost[100001], cantitate[100001];
long long rez=0;
f>>nr_saptamani>>pr_dep_sapt>>max_depozitare;
deque <int> d;
for (int sapt=1;sapt<=nr_saptamani;sapt++) {
f>>cost[sapt]>>cantitate[sapt];
while (!d.empty() && cost[sapt]<=cost[d.back()]+(sapt-d.back())*pr_dep_sapt) d.pop_back();
if (d.front()>sapt-max_depozitare) d.pop_front();
d.push_back(sapt);
rez = rez + cantitate[sapt]*(cost[d.front()]+(sapt-d.front())*pr_dep_sapt);
}
g<<rez;
}