Pagini recente » Cod sursa (job #2284002) | Cod sursa (job #1388376) | Cod sursa (job #1292978) | Cod sursa (job #1175993) | Cod sursa (job #3127592)
#include <iostream>
#include <fstream>
#include <deque>
#include <cmath>
using namespace std;
ifstream fin("branza.in");
ofstream fout("branza.out");
int main() {
long N, T, S, C, P, cnt;
deque<pair <long,int> > brnz;
cnt = 0;
fin >> N >> S >> T >> C >> P;
brnz.push_back({C,0});
//Se adauga cantitatea din prima sapt
cnt = cnt + P*brnz[0].first;
for(int i = 1; i < N; i++)
{
fin>>C>>P;
if (brnz.front().second + T < i)
brnz.pop_front();
while(!brnz.empty() && (S * (i - brnz.back().second) + brnz.back().first) >= C)
brnz.pop_back();
brnz.push_back({C, i});
cnt = cnt + P * brnz.front().first + S*P*(i-brnz.front().second);
}
fout<<cnt;
return 0;
}