Cod sursa(job #911360)

Utilizator dariusdariusMarian Darius dariusdarius Data 11 martie 2013 16:09:12
Problema Branza Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<stdio.h>
#include<deque>
#include<algorithm>
using namespace std;
deque<long long> q;
pair<long long,long long> a[100005];
int main()
{
    freopen("branza.in","r",stdin);
    freopen("branza.out","w",stdout);
    long long n;long long i,s,t;long long ans=0;
    scanf("%lld%lld%lld",&n,&s,&t);
    for(i=1;i<=n;i++)
    {
        scanf("%lld%lld",&a[i].first,&a[i].second);
        if(!q.empty() && q.front()+t<i)
            q.pop_front();
        while(!q.empty() && a[i].first<(a[q.back()].first+s*(i-q.back())))
            q.pop_back();
        q.push_back(i);
        ans=ans+a[q.front()].first*a[i].second+a[i].second*s*(i-q.front());
    }
    printf("%lld\n",ans);
    return 0;
}