Pagini recente » Cod sursa (job #2686648) | Cod sursa (job #1576042) | Cod sursa (job #2693091) | Cod sursa (job #1086083) | Cod sursa (job #423955)
Cod sursa(job #423955)
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <algorithm>
using namespace std;
int u;
class Gutuie{
public:
int inaltime, greutate;
};
bool operator<(Gutuie a, Gutuie b){
if( a.inaltime / u < b.inaltime / u )
return false;
else{
if( a.inaltime / u == b.inaltime / u ) {
if( a.greutate < b.greutate )
return false;
else
return true;
}
else
return true;
}
}
int main(){
int n, hmax;
FILE * fin = fopen( "gutui.in", "r" );
fscanf( fin, "%d %d %d", &n, &hmax, &u );
int i;
vector<Gutuie> v(n);
for(i = 0; i < n; i++)
fscanf(fin, "%d %d", &v[i].inaltime, &v[i].greutate);
sort( v.begin(), v.end() );
for(i = 0; i < n; i++)
printf("%d %d\n", v[i].inaltime, v[i].greutate);
i = 0;
while( v[i].inaltime > hmax )
i++;
int niv = v[i].inaltime / u;
int gmax = v[i].greutate;
for(i = 1; i < n; i ++)
if( v[i].inaltime / u < niv ){
gmax += v[i].greutate;
niv = v[i].inaltime / u;
}
printf("%d\n", gmax);
fclose(fin);
return 0;
}