Cod sursa(job #1522063)

Utilizator LegionHagiu Stefan Legion Data 11 noiembrie 2015 10:17:55
Problema Branza Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
long long i,pret;
vector<pair<long long,long long> > hip;
bool c(pair<long long,long long> a,pair<long long,long long> b)
{
    if (a.first+(i-a.second)*pret>b.first+(i-b.second)*pret)
    {
        return true;
    }
    else
    {
        return false;
    }
}
int main()
{
    ifstream in("branza.in");
    ofstream out("branza.out");
    long long zile,expira,p=0,acum,cerere;
    in>>zile;
    in>>pret;
    in>>expira;
    for (i=1;i<=zile;i++)
    {
        in>>acum;
        in>>cerere;
        hip.push_back(make_pair(acum,i));
        push_heap(hip.begin(),hip.end(),c);
        while (i-hip[0].second>expira)
        {
            pop_heap(hip.begin(),hip.end(),c);
            hip.pop_back();
        }
        p+=cerere*(hip[0].first+(i-hip[0].second)*pret);
    }
    out<<p;
}