Pagini recente » Istoria paginii utilizator/ancas | Istoria paginii runda/tema_1_10f | Diferente pentru utilizator/tomescu_alin intre reviziile 2 si 3 | Diferente pentru utilizator/slayerdme intre reviziile 7 si 8 | Cod sursa (job #911987)
Cod sursa(job #911987)
#include<fstream>
#include<set>
#include<algorithm>
using namespace std;
unsigned long long i,j,d,l,n,rez=0,timp;
multiset<int, greater <int> > heap;
struct oite
{
unsigned long long dist,lana;
};
oite a[100001];
bool cmp(oite a,oite b)
{
return a.dist<b.dist;
}
int main()
{
ifstream f("lupu.in");
ofstream g("lupu.out");
f>>n>>d>>l;
for(i=1;i<=n;++i)
{
f>>a[i].dist>>a[i].lana;
a[i].dist=(d-a[i].dist)/l+1;
timp=max(timp,a[i].dist);
}
sort(a+1,a+n+1,cmp);
while(timp)
{
while(n>0&&a[n].dist==timp)
{
heap.insert(a[n].lana);
--n;
}
if(heap.size()>0)
{
rez+=*heap.begin();
heap.erase(heap.begin());
}
--timp;
}
g<<rez<<"\n";
return 0;
}