Mai intai trebuie sa te autentifici.
Cod sursa(job #1293556)
Utilizator | Data | 16 decembrie 2014 01:11:34 | |
---|---|---|---|
Problema | Lupul Urias si Rau | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.9 kb |
#include <fstream>
#include <algorithm>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
ifstream is("lupu.in");
ofstream os("lupu.out");
int N, X, L;
pair <int, int> x;
vector <pair<int,int> > V;
int maximr(-999999999);
priority_queue <int> Q;
int main()
{
is >> N >> X >> L;
for ( int i = 1; i <= N; ++i )
{
is >> x.first >> x.second;
if ( x.first <= X )
{
x.first = (X-x.first)/L;
maximr = max(maximr,x.first);
V.push_back(x);
}
}
sort(V.begin(),V.end());
int it(V.size()-1);unsigned long long Sol(0);
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();
}
}
os << Sol;
}