Cod sursa(job #2645991)

Utilizator _dimitriTaranov-Mirea Dimitri _dimitri Data 30 august 2020 13:07:47
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
struct data {
unsigned int dist,fluff;
bool operator <(const data& x) const {
  return dist<x.dist;
}
} v[100001];
priority_queue<int> pq;
int main()
{
  long long int n,margin,step,len,sum;
  cin>> n >> margin >> step;
  for(int i=0; i<n; i++)
    cin >> v[i].dist >> v[i].fluff;
  v[n].dist=((1LL<<32)-1LL);
  sort(v,v+n);
  len=sum=0;
  for(int limit=margin%step; limit<=margin; limit+=step) {
    while(v[len].dist<=limit)
      pq.push(v[len++].fluff);
    if(pq.size()) {
      sum+=pq.top();
      pq.pop();
    }
  }
  cout << sum <<'\n';
  return 0;
}