Cod sursa(job #2266864)

Utilizator q1e123Solca Robert-Nicolae q1e123 Data 22 octombrie 2018 22:05:06
Problema Branza Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>
#include <deque>

using namespace std;

ifstream INPUT_FILE("branza.in");
ofstream OUTPUT_FILE("branza.out");

struct branza{
    long cost, kg, pos;
};

long n, s, t, sum;

deque<branza> deck;

int main()
{

    INPUT_FILE >> n >> s >> t;
    for (long i = 0; i < n; ++i) {
        branza tmp;
        tmp.pos = i;
        INPUT_FILE >> tmp.cost>> tmp.kg;
        while (!deck.empty() && tmp.cost< deck.back().cost + (i - deck.back().pos) * s) deck.pop_back();
        deck.push_back(tmp);
        sum += (deck.front().cost + (deck.back().pos - deck.front().pos) * s) * tmp.kg;
        if (deck.back().pos - deck.front().pos >= t) deck.pop_front();
    }
    OUTPUT_FILE << sum;
    return 0;
}