Cod sursa(job #1538509)

Utilizator andytosaAndrei Tosa andytosa Data 29 noiembrie 2015 11:41:09
Problema Branza Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <deque>
#define f first
#define s second
using namespace std;
ifstream fin("branza.in");
ofstream fout("branza.out");
deque< pair<int,int> > d;
int n,sapt,chirie,cost,cant,i,mini;
long long int sum;
int main()
{
    fin>>n>>chirie>>sapt;
    fin>>cost>>cant;
    sum += cost * cant;
    d.push_back(make_pair(cost, 1));
    for(i = 2; i <= n; ++i){
        fin>>cost>>cant;
        if(!d.empty())
            while(cost < d.front().f + (i - d.front().s) * chirie){
                d.pop_front();
                if(d.empty())
                    break;
            }

        if(!d.empty())
            if(d.front().s + sapt < i)
                d.pop_front();

        d.push_back(make_pair(cost, i));
        mini = min(cost, d.front().f + (i - d.front().s) * chirie);
        sum += mini * cant;
    }
    fout<<sum;
    return 0;
}