Pagini recente » Cod sursa (job #1576089) | Cod sursa (job #1694814) | Monitorul de evaluare | Istoria paginii utilizator/vasile_rotaru | Cod sursa (job #1785764)
#include <algorithm>
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
const int N = 100005;
struct ABC
{
int lana, timp;
};
priority_queue<int>v;
vector<ABC>a[N];
int main()
{
ABC nr;
long long int afis = 0;
int n, distlim, distmove, distoaie, lanaoaie, al, i, j, lanamax;
freopen("lupu.in","r",stdin);
freopen("lupu.out","w",stdout);
scanf("%d%d%d", &n, &distlim, &distmove);
for(i = 1;i <= n; ++i)
{
scanf("%d%d", &distoaie, &lanaoaie);
if(distoaie <= n)
{
al = (distlim - distoaie) / distmove + 1;
al = min(al , n);
nr.timp = al;
nr.lana = lanaoaie;
a[al].push_back(nr);
}
}
for(i = n;i > 0; --i)
{
for(j = 0;j < a[i].size(); ++j)
{
v.push(a[i][j].lana);
}
if(!v.empty())
{
lanamax = v.top();
afis += lanamax;
v.pop();
}
}
printf("%lld\n",afis);
return 0;
}