Cod sursa(job #2329325)

Utilizator rares404AlShaytan - Balasescu Rares rares404 Data 26 ianuarie 2019 16:16:32
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>
#define int long long

const int MV = 1e5 + 5 ;

struct DC {
  int dist, lana ;
  inline bool operator < (const DC &k) const {
    return k.dist > dist ;
  }
};

DC v[MV] ;
int total ;

std::priority_queue <int> pq ;

int32_t main() {
  freopen("lupu.in", "r", stdin) ;
  freopen("lupu.out", "w", stdout) ;
  int n, distmax, l, i ;
  scanf("%lld %lld %lld", &n, &distmax , &l) ;
  for (i = 1 ; i <= n ; ++ i) {
    scanf("%lld %lld", &v[i].dist, &v[i].lana) ;
  }
  std::sort(v + 1, v + 1 + n) ;
  for (int intr = distmax % l, i = 1 ; intr <= distmax; intr += l) {
    for (; i <= n && v[i].dist <= intr ; ++ i) {
        pq.push(v[i].lana) ;
    }
    if (!pq.empty()) {
      total += pq.top() ;
      pq.pop() ;
    }
  }
  printf("%lld", total) ;
  return 0 ; }