Cod sursa(job #1320656)

Utilizator stanescu.raduRadu Stanescu stanescu.radu Data 18 ianuarie 2015 11:50:34
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#include <algorithm>
#include <vector>
#include <algorithm>
#include <queue>

#define PB push_back
#define MP make_pair

using namespace std;
  
ifstream f ("lupu.in");
ofstream g("lupu.out");
  
int n, x, l;
pair <int, int> X;
vector <pair<int,int> > v;
long long sol = 0;
  
int maximr = -999999999;
  
priority_queue <int> Q;
  
int main()
{
    f >> n >> x >> l;
    for (int i = 1; i <= n; i++)
    {
        f >> X.first >> X.second;
        if (X.first <= x)
        {
            X.first = (x - X.first) / l;
            maximr = max(maximr,   X.first);
            v.PB(X);
        }
    }
	
    sort(v.begin(),v.end());
    int it = v.size() - 1;
    
    for (int i = maximr; i >= 0; i--)
    {
        for ( ; v[it].first == i && it >= 0; it--)
            Q.push(v[it].second);
		
        if (!Q.empty())
            sol += Q.top() ,Q.pop();
    }
    g << sol;
	return 0;
}