Cod sursa(job #1522062)

Utilizator LegionHagiu Stefan Legion Data 11 noiembrie 2015 10:16:54
Problema Branza Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int i,pret;
vector<pair<int,int> > hip;
bool c(pair<int,int> a,pair<int,int> 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");
    int 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;
}