Cod sursa(job #1389928)

Utilizator andreey_047Andrei Maxim andreey_047 Data 16 martie 2015 18:59:05
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <cstdio>
#include <bitset>
#include <algorithm>
#include <queue>
#define nmax 100005
using namespace std;
int n,x,len,m,best;
long long sum;
struct Coord{
    int d,b;
};
Coord a[nmax];
priority_queue<int>q;
inline  bool cmp(const Coord A,const Coord B){
 return A.d < B.d;
}
int main(){
    int i,j,xx,yy;
    freopen("lupu.in","r",stdin);
    freopen("lupu.out","w",stdout);
    scanf("%d%d%d",&n,&x,&len);
    for(i=1;i<=n;i++){
        scanf("%d%d",&xx,&yy);
        if(xx<=x)
        a[++m].d = (x-xx) / len+1,a[m].b=yy;
    }
   n=m;
    sort(a+1,a+n+1,cmp);
    j=n;
        for(i=n,j=a[n].d;j;j--){
          while(i && a[i].d == j) q.push(a[i].b),i--;
           if(!q.empty()){
            sum+=q.top();
            q.pop();
           }
        }
      cout<<sum<<'\n';
    return 0;
}