Pagini recente » Cod sursa (job #2046154) | Cod sursa (job #2134969) | Cod sursa (job #828802) | Cod sursa (job #2379844) | Cod sursa (job #2784850)
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;
ifstream fin ("lupu.in");
ofstream fout ("lupu.out");
int n,x,lung,suma;
struct oaie{
int lana,viata;
}oi[100001];
priority_queue<int> heap;
bool cmp(oaie a,oaie b)
{
if(a.viata==b.viata)
{
return a.lana>b.lana;
}
return a.viata>b.viata;
}
int main()
{
fin>>n>>x>>lung;
for(int i=1; i<=n; i++)
{
int dist,lana;
fin>>dist>>lana;
oi[i].lana=lana;
oi[i].viata=(x-dist)/lung;
}
//sortez dupa durata de viata(durata in care poate fi atacata)
stable_sort(oi+1,oi+n+1,cmp);
/*for(int i=1; i<=n; i++)
{
fout<<oi[i].lana<<" "<<oi[i].viata<<"\n";
}*/
int k=1;
while(k<=n)
{
int nivel=oi[k].viata;
while(k<=n && oi[k].viata==nivel)
{
heap.push(oi[k].lana);
k++;
}
suma+=heap.top();
heap.pop();
}
fout<<suma;
return 0;
}