Cod sursa(job #1736461)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 1 august 2016 19:28:01
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<cstdio>
#include<algorithm>
#include<queue>
#define MAXN 100010
using namespace std;
struct Sheep{
    int wool,day;
};
struct Compare{
    inline bool operator()(const Sheep &a,const Sheep &b)const{
        return a.wool<b.wool;
    }
};
priority_queue<Sheep,vector<Sheep>,Compare> Heap;
vector<Sheep> v[MAXN];
int main(){
    freopen("lupu.in","r",stdin);
    freopen("lupu.out","w",stdout);
    int n,x,l,i,j,a,b,day;
    long long answer=0;
    Sheep temp;
    scanf("%d%d%d",&n,&x,&l);
    for(i=1;i<=n;i++){
        scanf("%d%d",&a,&b);
        if(a>x)
            continue;
        day=min((x-a)/l+1,n);
        temp.wool=b;
        temp.day=day;
        v[day].push_back(temp);
    }
    for(i=n;i>=1;i--){
        for(j=0;j<v[i].size();j++)
            Heap.push(v[i][j]);
        if(Heap.empty())
            continue;
        answer+=Heap.top().wool;
        Heap.pop();
    }
    printf("%lld",answer);
    return 0;
}