Pagini recente » Borderou de evaluare (job #1275979) | Borderou de evaluare (job #2474694) | Borderou de evaluare (job #2591431) | Borderou de evaluare (job #2780428) | Cod sursa (job #2412374)
#include<fstream>
#include<set>
#include<algorithm>
using namespace std;
ifstream in ("lupu.in");
ofstream out ("lupu.out");
int total,n,l,x,a,b,k,cnt,t;
struct str {
int lana, timp;
}oite[100005];
bool cmp (str a, str b) {
return a.timp > b.timp;
}
multiset<int> s;
int main (void) {
in >> n >> x >> l;
for (int i = 1; i <= n; i ++) {
in >> a >> b;
if (a <= x) {
k ++;
oite[k].timp = (x - a) / l + 1;;
oite[k].lana = b;
}
}
sort (oite+1,oite+k+1,cmp);
t = oite[1].timp;
cnt = 1;
for (int i = t; i >= 1; i --) {
while (cnt <= k && oite[cnt].timp == i) {
s.insert(oite[cnt].lana);
cnt ++;
}
if (!s.empty()) {
total += *(s.rbegin());
s.erase(--s.end());
}
}
out << total;
return 0;
}