Cod sursa(job #1637133)

Utilizator vazanIonescu Victor Razvan vazan Data 7 martie 2016 15:12:15
Problema Branza Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<cstdio>
#include<deque>
using namespace std;
int main()
{
    freopen("branza.in", "r", stdin);
    freopen("branza.out", "w", stdout);
    long long n, s, t, i, cerere, pret, x, y;
    long long sumtot=0;
    pair<long long, long long> debug;
    deque<pair<long long, long long> > dep;
    scanf("%lld%lld%lld", &n, &s, &t);
    for(i=1; i<=n; i++)
    {
        scanf("%lld%lld", &pret, &cerere);
        if(!dep.empty())
        {
            x=dep.front().first;
            y=dep.front().second;
            sumtot+=min(cerere*pret, cerere*(x+s*(i-y)));
        }
        else
            sumtot+=cerere*pret;
        if(!dep.empty())
            debug=dep.back();
        while(!dep.empty() && pret+s<dep.back().first+s*(i-dep.back().second+1))
            dep.pop_back();
        dep.push_back(make_pair(pret, i));
        if(!dep.empty()&&(i-dep.front().second+1>=t))
            dep.pop_front();
    }
    printf("%lld", sumtot);
    return 0;
}