fork(2) download
  1. /* paiza POH! Lite
  2.  * result:
  3.  * http://p...content-available-to-author-only...a.jp/poh/kirishima/result/8d539fbf10fe2f3560b8f51e51c1404f
  4.  * author: Leonardone @ NEETSDKASU
  5.  */
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8.  
  9. typedef struct _data {
  10. int q;
  11. int r;
  12. double p;
  13. int f;
  14. } DATA, *PDATA;
  15.  
  16. int sort_p(void *a, void *b) {
  17. PDATA pa = (PDATA)a;
  18. PDATA pb = (PDATA)b;
  19. double d = pa->p - pb->p;
  20. if (d > 0) {
  21. return 1;
  22. } else if (d < 0) {
  23. return -1;
  24. } else {
  25. return 0;
  26. }
  27. }
  28.  
  29. int sort_q(void *a, void *b) {
  30. PDATA pa = (PDATA)a;
  31. PDATA pb = (PDATA)b;
  32. return pb->q - pa->q;
  33. }
  34.  
  35.  
  36. DATA data[50];
  37.  
  38. int main(void) {
  39.  
  40. int m, n;
  41. PDATA pdata = data;
  42. int i, j, k;
  43. int sum_q, sum_r;
  44.  
  45. scanf("%d", &m);
  46. scanf("%d", &n);
  47.  
  48. for (i = 0; i < n; i++) {
  49. scanf("%d %d", &pdata->q, &pdata->r);
  50. pdata->p = (double)pdata->r / (double)pdata->q;
  51. pdata++;
  52. }
  53.  
  54. qsort(data, n, sizeof(DATA), sort_p);
  55.  
  56. sum_q = sum_r = 0;
  57. pdata = data;
  58. for (i = 0; i < n; i++) {
  59. sum_q += pdata->q;
  60. sum_r += pdata->r;
  61. pdata->f = 1;
  62. if (sum_q >= m) {
  63. break;
  64. }
  65. pdata++;
  66. }
  67.  
  68. qsort(data, i + 1, sizeof(DATA), sort_q);
  69.  
  70. sum_q = sum_r = 0;
  71. pdata = data;
  72. for (i = 0; i < n; i++) {
  73. sum_q += pdata->q;
  74. sum_r += pdata->r;
  75. pdata->f = 1;
  76. if (sum_q >= m) {
  77. break;
  78. }
  79. pdata++;
  80. }
  81.  
  82. printf("%d\n", sum_r);
  83.  
  84. return 0;
  85. }
  86.  
Success #stdin #stdout 0s 2296KB
stdin
250
5
35 3640
33 2706
98 9810
57 5472
95 7790 
stdout
23072