Cod sursa(job #2284039)

Utilizator AlexGAlexandru Gheorghe AlexG Data 16 noiembrie 2018 17:43:36
Problema Lupul Urias si Rau Scor 52
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>

using namespace std;

struct Oaie
{
    int distanta, lana;
    friend istream& operator>>(istream& in, Oaie &o)
    {
        return in >> o.distanta >> o.lana;
    }
};

int main()
{
    ifstream fin("lupu.in");
    int n, x, l;
    fin >> n >> x >> l;
    vector<Oaie> oi(n);
    vector<int> timp(n);
    int timpMaxim=0;
    for(int i=0; i<n; ++i)
    {
        fin >> oi[i];
        timp[i] = (x - oi[i].distanta) / l;
        if(timpMaxim < timp[i])
            timpMaxim = timp[i];
    }
    priority_queue<int> lana;
    int suma = 0;
    for(int i=timpMaxim; i>=0; --i)
    {
        for(int j=0; j<n; ++j)
            if(timp[j] == i)
                lana.push(oi[j].lana);
        if(!lana.empty())
        {
            suma += lana.top();
            lana.pop();
        }
    }
    ofstream fout("lupu.out");
    fout << suma;
    return 0;
}