Cod sursa(job #3211003)

Utilizator paull122Paul Ion paull122 Data 7 martie 2024 22:29:27
Problema Branza Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>

#define NMAX 100000
#define ll long long
#define MOD 666013
using namespace std;

ifstream fin("branza.in");
ofstream fout("branza.out");

int n,s,t;
ll a[NMAX+1];
ll c[NMAX+1],p[NMAX+1];
int main()
{
    fin >> n >> s >> t;
    for(int i=1;i<=n;i++)
    {
        fin >> c[i] >> p[i];
    }
    a[1]=c[1]*p[1];
    deque<int> Q;
    Q.push_back(1);
    for(int i=2;i<=n;i++)
    {
        a[i]=p[i]*c[i];
        while(!Q.empty() && Q.front() < i-t)
        {
            Q.pop_front();
        }
        if(!Q.empty())
        {
            a[i]=min(a[i],p[i]*c[Q.front()] + s * (i-Q.front()) * p[i]);
        }
        while(!Q.empty() && c[Q.back()] - s * Q.back() >= c[i] - s * i)
        {
            Q.pop_back();
        }
        Q.push_back(i);
    }
    long long res=0;
    for(int i=1;i<=n;i++)
    {
        res += a[i];
    }
    fout << res;
}