Pagini recente » Cod sursa (job #2963495) | Cod sursa (job #2978516) | Cod sursa (job #2418094) | Cod sursa (job #626648) | Cod sursa (job #423956)
Cod sursa(job #423956)
#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" );
FILE * fout = fopen( "gutui.out", "w" );
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;
}
fprintf(fout, "%d\n", gmax);
fclose(fout);
fclose(fin);
return 0;
}