Cod sursa(job #3004129)

Utilizator DKMKDMatei Filibiu DKMKD Data 16 martie 2023 10:08:48
Problema Lupul Urias si Rau Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 1e5+5;

int n,x,l,suma,query;
struct oaie{
  int l,d;
  bool operator < (const oaie & a) const{
     return l<a.l;
  }
}v[NMAX];
priority_queue<oaie>Q;
void read(){
 fin>>n>>x>>l;
 for(int i=1;i<=n;++i){
    fin>>v[i].d>>v[i].l;
    if(v[i].d<=x)
      suma+=v[i].l;
 }
}
inline bool cmp(oaie A,oaie B){
   return A.d<B.d;
}
void solve(){
  if(l==0){
    fout<<suma;
    return;
  }
  sort(v+1,v+n+1,cmp);
  int cat=x%l,i=1;
  while(cat<=x){
    for(;i<=n && v[i].d<=cat;++i)
       Q.push(v[i]);
    if(!Q.empty()){
      query+=Q.top().l;
      Q.pop();
    }
    cat+=l;
  }
  fout<<query;
}
int main(){
 read();
 solve();
 return 0;
}