Pagini recente » Cod sursa (job #2950996) | Cod sursa (job #3188448) | Cod sursa (job #2746712) | Cod sursa (job #742628) | Cod sursa (job #2032576)
#include <iostream>
#include <fstream>
#define DMAX 100010
using namespace std;
ifstream in("lupu.in");
ofstream out("lupu.out");
struct element{
long lg;
long lana;
}arrey[DMAX];
int N;
long M, K;//date de intrare
long long suma;
bool marcat[DMAX];
void citire(){
in >> N >> M >> K;
for(int i = 1; i<= N; i++){
in >> arrey[i].lg >> arrey[i].lana;
}
}
void rezolvare(){
long maxim;
int pozMin;
bool ok;
do{
maxim = -1;
pozMin = -1;
ok = false;
for(int i = 1; i <= N; i++){
if(!marcat[i] && (arrey[i].lg <= M) && (arrey[i].lg > M - K) && maxim < arrey[i].lana){
ok = true;
maxim = arrey[i].lana;
pozMin = i;
}
}
if(!ok){
for(int i = 1; i <= N; i++){
if(!marcat[i] && arrey[i].lana > maxim && arrey[i].lg <= M){
maxim = arrey[i].lana;
pozMin = i;
}
}
}
if(pozMin != -1){
suma += maxim;
M -= K;
marcat[pozMin] = true;
}
}while(pozMin != -1);
out << suma;
}
int main(){
citire();
rezolvare();
return 0;
}