Mai intai trebuie sa te autentifici.
Cod sursa(job #2132420)
| Utilizator | Data | 15 februarie 2018 19:22:43 | |
|---|---|---|---|
| Problema | Lupul Urias si Rau | Scor | 16 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.16 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(){
map<int,bool> inQueue;
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;
}
if(!inQueue[i]){
inQueue[i]=true;
coada.push(oi[i]);
}
}
cant=cant+coada.top().lana;
coada.pop();
}
out<<cant;
}
int main()
{
Read();
Determinare();
return 0;
}
