Pagini recente » Cod sursa (job #1453522) | Cod sursa (job #1604217) | Cod sursa (job #2850459) | Cod sursa (job #1551126) | Cod sursa (job #438341)
Cod sursa(job #438341)
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <map>
using namespace std;
typedef pair <long, long> Int_Pair;
int main(){
multimap<long, long, std::greater<long> > gutui;
multimap<long, long>::iterator it;
multimap<long, long > rez;
ifstream in( "gutui.in" );
ofstream out( "gutui.out" );
string line;
long v[3];
long i=0, j=0, x=0, k=0, y=0, max=0;;
long N, H, U;
getline (in, line);
string numar;
for(i=0; i<=line.size(); i++){
if(line[i] != ' ' ) numar.push_back( line[i] );
else{
istringstream r( numar );
r>>x;
v[j] = x;
numar.clear();
j++;
}
}
istringstream r( numar );
r>>x;
v[j] = x;
numar.clear();
N = v[0]; H = v[1]; U = v[2];
while (! in.eof() ){
getline (in, line);
for(i=0; i<=line.size(); i++){
if(line[i] != ' ' ) numar.push_back( line[i] );
else {
istringstream r( numar );
r>>y;
numar.clear();
}
}
istringstream r( numar );
r>>x;
gutui.insert ( Int_Pair ( y, x ) );
numar.clear();
k++;
}
for(it = gutui.begin();it != gutui.end();it++){
if(H >= it->first ){
rez.insert( Int_Pair ( it->second, it->first ) );
H=H-U;
}
else{
if(!rez.empty())
if( it->second >= (rez.begin())->first ){
rez.erase(rez.begin());
rez.insert( Int_Pair ( it->second, it->first ) );
}
}
}
for(it = rez.begin();it != rez.end();it++){
max += it->first;
}
out<<max;
in.close(); out.close();
return 0;
}