1 #include <stdio.h> 2 #include <algorithm> 3 usando el espacio de nombres std; 4 const int MAXN = 1001 ; 5 struct kind { 6 double num, price, p_price; 7 }; 8 int d, n; 9 struct kind a [MAXN]; 10 11 bool cmp (tipo a, tipo b); 12 doble vuelta máxima ( int d); 13 14 int main () { 15 scanf ( " % d% d ", & n, & d); 16 para ( int i = 0 ; i <n; i ++) scanf ( " % lf " , & a [i] .num); 17 para ( int i = 0 ; i <n; i ++) scanf ( " % lf " , & a [i] .price); 18 para ( int i = 0 ; i <n; i ++) a [i] .p_price = a [i] .price / a [i] .num; 19 20 sort (a, a + MAXN, cmp); 21 doble mr = retorno máximo (d); 22 printf ( " % .2f ",señor); 23 devuelve 0 ; 24 } 25 bool cmp (tipo a, tipo b) { 26 return a.p_price> b.p_price; 27 } 28 doble vuelta máxima ( int d) { 29 int i = 0 ; 30 mr doble = 0.0 ; 31 while (d> 0 && i < n) { 32 if (a [i] .num> d) { 33 mr + = d * a [i] .p_price; 34 d = 0; 35 i ++ ; 36 } else { 37 d - = a [i] .num; 38 mr + = a [i] .precio; 39 i ++ ; 40 } 41 } 42 retorno mr; 43 }
El método de clasificación de la función sort (): sort (inicio, posición final junto a la función de comparación) Cuando no se necesita la función de comparación, el valor predeterminado es en orden creciente, de lo contrario, debe definir la función de comparación usted mismo.