Cod sursa(job #2742212)

Utilizator Asgari_ArminArmin Asgari Asgari_Armin Data 20 aprilie 2021 14:25:38
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#include <algorithm>
#include <queue>

using namespace std;

ifstream fin( "lupu.in" );
ofstream fout( "lupu.out" );

const int NMAX = 1e5;

struct lol{
  int timp, lana;
  bool operator < ( const lol &shit ) const {
    return timp < shit.timp;
  }
};

lol v[NMAX + 1];
priority_queue <int> pq;

int main() {
  int n, x, l, i, m, a, d, lana;
  long long ans;

  fin >> n >> x >> l;
  m = 0;
  for( i = 1; i <= n; ++i ){
    fin >> d >> lana;
    if( d <= x )
      v[++m] = {(x - d) / l, lana};
  }

  sort( v + 1, v + m + 1 );
  i = m; ans = 0; a = n - 1;
  while( a >= 0 ){
    while( i >= 1 && a == v[i].timp )
      pq.push(v[i--].lana);
    a--;
    if( !pq.empty() ){
      ans += pq.top();
      pq.pop();
    }
  }
  fout << ans;
  return 0;
}