Cod sursa(job #604662)

Utilizator cahemanCasian Patrascanu caheman Data 24 iulie 2011 12:20:38
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<cstdio> 
#include<vector> 
#include<queue> 
#include<algorithm> 
using namespace std; 
long long n,x,l; 
struct LUP 
{ 
long long d; 
long long a; 
}; 
vector <LUP> z;
priority_queue <long long> h; 
inline bool cmp (LUP v , LUP w) 
{ 
return v.d<w.d; 
} 
void read () 
{ 
long long i;
LUP temp; 
scanf("%lld%lld%lld",&n,&x,&l); 
for (i=1;i<=n;i++) 
{ 
scanf("%lld%lld",&temp.d,&temp.a); 
z.push_back(temp); 
} 
sort(z.begin(),z.end(),cmp); 
} 
void rez() 
{ 
long long dist; 
long long  s=0; 
vector <LUP> :: iterator it; 
LUP k; 
for (dist=0,it=z.begin();it!=z.end() && dist<=x;dist+=l) 
{ 
for (;it!=z.end();++it) 
{ 
k=*it; 
if (k.d>dist) 
break; 
else
h.push(k.a); 
} 
if (!h.empty()) 
{ 
s=s+h.top(); 
h.pop(); 
} 
} 
printf("%lld",s); 
} 
int main() 
{ 
freopen("lupu.in","r",stdin); 
freopen("lupu.out","w",stdout); 
read(); 
rez(); 
return 0; 
}