Cod sursa(job #728394)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 28 martie 2012 18:16:05
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<fstream>
#include<algorithm>
#include<queue>
#define dim 100007

using namespace std;

ifstream f("lupu.in");
ofstream g("lupu.out");


priority_queue<long long >q;

struct pufosenie {
	
	int dist,pufos;
}
v[dim];

bool  cmp( pufosenie a , pufosenie  b ) {
	
	return a.dist > b.dist;
}

inline int maxim ( int a, int b ) {
	
	if( a > b )
			return a;
	
	return b;
	
}
long long Dezmat;
int N ,X ,L , Maxu;

int main (){
	
	f >>N >> X >> L;
	
	Maxu=-10000;
	
	for(int i = 1 ;i <= N ;++i ){
		
		f >> v[i].dist >> v[i].pufos ;
		
		v[i].dist= ( X- v[i].dist )/L;
		
		Maxu= maxim( Maxu, v[i].dist    );
		
	}
	
	sort(v+1 , v+1+N , cmp);
	
	int j = 1;
	
	for(int i=Maxu ; i >=0 ;  --i ){
		
		for(  ;  j<=N && v[j].dist == i  ;  ){
			
			q.push(v[j++].pufos);
			
		}
		
		if( !q.empty() ){
			
			Dezmat+=q.top();
			
			q.pop();
		}
		
	}
	
	g << Dezmat << "\n";
 	return 0;
}