Cod sursa(job #1159811)

Utilizator ionelasimonaIonela Simona ionelasimona Data 29 martie 2014 21:26:27
Problema Branza Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
long long  sol,n,s,t;
struct branza { long long pret, cantitate;} a[100014];
deque <long long > d;
int main()
{
    long long i,j,indcrt;
    fstream f,g;
    f.open("branza.in",ios::in);
    g.open("branza.out",ios::out);
    f>>n>>s>>t;
    for (i=1;i<=n;i++)
        f>>a[i].pret>>a[i].cantitate;
    for (i=1;i<=n;i++)
    {
        while (!d.empty() && a[d.back()].pret+(i-d.back())*s>=a[i].pret)
            d.pop_back();
        d.push_back(i);

            if (i-d.front()>t)
                d.pop_front();
        indcrt=d.front();
        sol=sol+(a[indcrt].pret+(i-indcrt)*s)*a[i].cantitate;
    }
    g<<sol;
}