Pagini recente » Cod sursa (job #2474781) | Cod sursa (job #1756815) | Cod sursa (job #2209442) | Cod sursa (job #1611446) | Cod sursa (job #2845804)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("lupu.in");
ofstream g ("lupu.out");
long long n;
struct oitza
{
long long val;
long long timp;
long long parte;
bool operator < (const oitza &A) const
{
return A.val<val;
}
};
long long l;
oitza a[100005];
long long x;
priority_queue <oitza> Q;
int cmp(oitza A, oitza B)
{
return A.timp>B.timp;
}
int main()
{
f>>n>>x>>l;
int oimaxim=x/l+1;
int lung=0;
for(int i=1; i<=n; ++i)
{
long long prim, secund;
f>>secund>>prim;
if(x>=secund)
{
++lung;
a[lung].val=prim;
a[lung].timp=secund;
a[lung].parte=(x - secund) / l;
}
}
sort(a+1, a+lung+1, cmp);
Q.push(a[1]);
for(int i=2; i<=lung; ++i)
{
cout<<a[i].val<<" "<<a[i].timp<<" "<<a[i].parte<<"\n";
if(Q.size()<=a[i].parte)
Q.push(a[i]);
else if(a[i].val>Q.top().val)
{
/// cout<<Q.top().val<<" "<<a[i].val<<"\n";
Q.pop();
Q.push(a[i]);
}
}
long long nr=0;
long long cont=0;
while(!Q.empty())
{
/// cout<<Q.top().parte<<" "<<Q.top().timp<<" "<<Q.top().val<<"\n";
nr+=Q.top().val;
Q.pop();
++cont;
}
///cout<<cont;
g<<nr;
return 0;
}