Cod sursa(job #2132464)

Utilizator catalinlupCatalin Lupau catalinlup Data 15 februarie 2018 19:48:08
Problema Lupul Urias si Rau Scor 16
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <bits/stdc++.h>
#define INFILE "lupu.in"
#define OUTFILE "lupu.out"
#define lana first
#define dist second
using namespace std;
typedef pair<int,int> oaie;
ifstream in(INFILE);
ofstream out(OUTFILE);
int timp=0;
int N,X,L;
vector<oaie> oi;
bool compDist(oaie o1, oaie o2){
    return (o1.dist<=o2.dist);
}
void Read(){
    in>>N>>X>>L;
    for(int i=1;i<=N;i++){
        int D,A;
        in>>D>>A;
        oi.push_back(make_pair(A,D));
    }
    sort(oi.begin(),oi.end(),compDist);
    while(oi[0].dist+L*timp<=X)
        timp++;
}

void Determinare(){
    priority_queue<oaie,vector<oaie>,less<oaie>> coada;
    int last=0;
    unsigned long long cant=0;
    while(timp>0){
        timp--;
        for(int i=last;i<oi.size();i++){
            if(oi[i].dist+L*timp>X){
                last=i;
                break;
            }
            coada.push(oi[i]);

        }
        if(!coada.empty()){
            cant=cant+coada.top().lana;
            coada.pop();
        }

    }
    out<<cant;

}

int main()
{
    Read();
    Determinare();
    return 0;
}